Skip to content

Commit 7e6034e

Browse files
committed
Twiddle with VLQ
1 parent 5c10345 commit 7e6034e

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/vlq.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,13 @@ import { assertFalse, assertStrictEquals } from "jsr:@std/assert";
88

99
describe("TokenIterator", () => {
1010
describe("nextUnsignedVLQ", () => {
11+
it("handles multi-digit numbers", () => {
12+
const iter = new TokenIterator("hB");
13+
14+
assertStrictEquals(iter.nextUnsignedVLQ(), 33);
15+
assertFalse(iter.hasNext());
16+
});
17+
1118
it("returns zero when no more characters are available", () => {
1219
const iter = new TokenIterator("");
1320
assertFalse(iter.hasNext());

src/vlq.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,13 @@ export class TokenIterator {
8383
nextUnsignedVLQ(): number {
8484
let result = 0;
8585
let shift = 0;
86-
let digit: number = VLQ_CONTINUATION_MASK;
87-
while (digit & VLQ_CONTINUATION_MASK) {
86+
let digit = 0;
87+
do {
8888
const charCode = this.nextCharCode();
8989
digit = BASE64_CODES[charCode];
9090
result += (digit & VLQ_BASE_MASK) << shift;
9191
shift += VLQ_BASE_SHIFT;
92-
}
92+
} while (digit & VLQ_CONTINUATION_MASK);
9393
return result;
9494
}
9595

0 commit comments

Comments
 (0)