Skip to content

Commit be8f6c2

Browse files
committed
Ensure unused bits being zero in writeVarint64, set all bits on write, fixes #15
1 parent 67f070d commit be8f6c2

File tree

6 files changed

+46
-73
lines changed

6 files changed

+46
-73
lines changed

dist/ByteBufferAB.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1262,19 +1262,17 @@
12621262
this.resize((capacity11 *= 2) > offset ? capacity11 : offset);
12631263
offset -= size;
12641264
switch (size) {
1265-
case 10: this.view.setUint8(offset+9, (part2 >>> 7) | 0x80);
1266-
case 9 : this.view.setUint8(offset+8, (part2 ) | 0x80);
1267-
case 8 : this.view.setUint8(offset+7, (part1 >>> 21) | 0x80);
1268-
case 7 : this.view.setUint8(offset+6, (part1 >>> 14) | 0x80);
1269-
case 6 : this.view.setUint8(offset+5, (part1 >>> 7) | 0x80);
1270-
case 5 : this.view.setUint8(offset+4, (part1 ) | 0x80);
1271-
case 4 : this.view.setUint8(offset+3, (part0 >>> 21) | 0x80);
1272-
case 3 : this.view.setUint8(offset+2, (part0 >>> 14) | 0x80);
1273-
case 2 : this.view.setUint8(offset+1, (part0 >>> 7) | 0x80);
1274-
case 1 : this.view.setUint8(offset , (part0 ) | 0x80);
1265+
case 10: this.view.setUint8(offset+9, (part2 >>> 7) & 0x01);
1266+
case 9 : this.view.setUint8(offset+8, size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F);
1267+
case 8 : this.view.setUint8(offset+7, size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F);
1268+
case 7 : this.view.setUint8(offset+6, size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F);
1269+
case 6 : this.view.setUint8(offset+5, size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F);
1270+
case 5 : this.view.setUint8(offset+4, size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F);
1271+
case 4 : this.view.setUint8(offset+3, size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F);
1272+
case 3 : this.view.setUint8(offset+2, size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F);
1273+
case 2 : this.view.setUint8(offset+1, size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F);
1274+
case 1 : this.view.setUint8(offset , size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F);
12751275
}
1276-
offset += size-1;
1277-
this.view.setUint8(offset, this.view.getUint8(offset) & 0x7F);
12781276
if (relative) {
12791277
this.offset += size;
12801278
return this;

dist/ByteBufferAB.min.js

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ByteBufferAB.min.js.gz

39 Bytes
Binary file not shown.

dist/ByteBufferAB.min.map

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dist/ByteBufferNB.js

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1418,19 +1418,17 @@ module.exports = (function() {
14181418
this.resize((capacity11 *= 2) > offset ? capacity11 : offset);
14191419
offset -= size;
14201420
switch (size) {
1421-
case 10: this.buffer[offset+9] = (part2 >>> 7) | 0x80;
1422-
case 9 : this.buffer[offset+8] = (part2 ) | 0x80;
1423-
case 8 : this.buffer[offset+7] = (part1 >>> 21) | 0x80;
1424-
case 7 : this.buffer[offset+6] = (part1 >>> 14) | 0x80;
1425-
case 6 : this.buffer[offset+5] = (part1 >>> 7) | 0x80;
1426-
case 5 : this.buffer[offset+4] = (part1 ) | 0x80;
1427-
case 4 : this.buffer[offset+3] = (part0 >>> 21) | 0x80;
1428-
case 3 : this.buffer[offset+2] = (part0 >>> 14) | 0x80;
1429-
case 2 : this.buffer[offset+1] = (part0 >>> 7) | 0x80;
1430-
case 1 : this.buffer[offset ] = (part0 ) | 0x80;
1421+
case 10: this.buffer[offset+9] = (part2 >>> 7) & 0x01;
1422+
case 9 : this.buffer[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;
1423+
case 8 : this.buffer[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;
1424+
case 7 : this.buffer[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;
1425+
case 6 : this.buffer[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;
1426+
case 5 : this.buffer[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;
1427+
case 4 : this.buffer[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;
1428+
case 3 : this.buffer[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;
1429+
case 2 : this.buffer[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;
1430+
case 1 : this.buffer[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;
14311431
}
1432-
offset += size-1;
1433-
this.buffer[offset] &= 0x7F;
14341432
if (relative) {
14351433
this.offset += size;
14361434
return this;

src/types/varints/varint64.js

Lines changed: 20 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -85,52 +85,29 @@ if (Long) {
8585
//? ENSURE_CAPACITY('size');
8686
switch (size) {
8787
//? if (NODE) {
88-
//? if (INLINE) {
89-
case 10: this.buffer[offset+9] = (part2 >>> 7) | 0x80;
90-
case 9 : this.buffer[offset+8] = (part2 ) | 0x80;
91-
case 8 : this.buffer[offset+7] = (part1 >>> 21) | 0x80;
92-
case 7 : this.buffer[offset+6] = (part1 >>> 14) | 0x80;
93-
case 6 : this.buffer[offset+5] = (part1 >>> 7) | 0x80;
94-
case 5 : this.buffer[offset+4] = (part1 ) | 0x80;
95-
case 4 : this.buffer[offset+3] = (part0 >>> 21) | 0x80;
96-
case 3 : this.buffer[offset+2] = (part0 >>> 14) | 0x80;
97-
case 2 : this.buffer[offset+1] = (part0 >>> 7) | 0x80;
98-
case 1 : this.buffer[offset ] = (part0 ) | 0x80;
99-
//? } else {
100-
case 10: this.buffer.writeUint8((part2 >>> 7) | 0x80, offset+9, true);
101-
case 9 : this.buffer.writeUint8((part2 ) | 0x80, offset+8, true);
102-
case 8 : this.buffer.writeUint8((part1 >>> 21) | 0x80, offset+7, true);
103-
case 7 : this.buffer.writeUint8((part1 >>> 14) | 0x80, offset+6, true);
104-
case 6 : this.buffer.writeUint8((part1 >>> 7) | 0x80, offset+5, true);
105-
case 5 : this.buffer.writeUint8((part1 ) | 0x80, offset+4, true);
106-
case 4 : this.buffer.writeUint8((part0 >>> 21) | 0x80, offset+3, true);
107-
case 3 : this.buffer.writeUint8((part0 >>> 14) | 0x80, offset+2, true);
108-
case 2 : this.buffer.writeUint8((part0 >>> 7) | 0x80, offset+1, true);
109-
case 1 : this.buffer.writeUint8((part0 ) | 0x80, offset , true);
110-
//? }
88+
case 10: this.buffer[offset+9] = (part2 >>> 7) & 0x01;
89+
case 9 : this.buffer[offset+8] = size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F;
90+
case 8 : this.buffer[offset+7] = size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F;
91+
case 7 : this.buffer[offset+6] = size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F;
92+
case 6 : this.buffer[offset+5] = size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F;
93+
case 5 : this.buffer[offset+4] = size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F;
94+
case 4 : this.buffer[offset+3] = size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F;
95+
case 3 : this.buffer[offset+2] = size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F;
96+
case 2 : this.buffer[offset+1] = size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F;
97+
case 1 : this.buffer[offset ] = size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F;
11198
//? } else {
112-
case 10: this.view.setUint8(offset+9, (part2 >>> 7) | 0x80);
113-
case 9 : this.view.setUint8(offset+8, (part2 ) | 0x80);
114-
case 8 : this.view.setUint8(offset+7, (part1 >>> 21) | 0x80);
115-
case 7 : this.view.setUint8(offset+6, (part1 >>> 14) | 0x80);
116-
case 6 : this.view.setUint8(offset+5, (part1 >>> 7) | 0x80);
117-
case 5 : this.view.setUint8(offset+4, (part1 ) | 0x80);
118-
case 4 : this.view.setUint8(offset+3, (part0 >>> 21) | 0x80);
119-
case 3 : this.view.setUint8(offset+2, (part0 >>> 14) | 0x80);
120-
case 2 : this.view.setUint8(offset+1, (part0 >>> 7) | 0x80);
121-
case 1 : this.view.setUint8(offset , (part0 ) | 0x80);
99+
case 10: this.view.setUint8(offset+9, (part2 >>> 7) & 0x01);
100+
case 9 : this.view.setUint8(offset+8, size !== 9 ? (part2 ) | 0x80 : (part2 ) & 0x7F);
101+
case 8 : this.view.setUint8(offset+7, size !== 8 ? (part1 >>> 21) | 0x80 : (part1 >>> 21) & 0x7F);
102+
case 7 : this.view.setUint8(offset+6, size !== 7 ? (part1 >>> 14) | 0x80 : (part1 >>> 14) & 0x7F);
103+
case 6 : this.view.setUint8(offset+5, size !== 6 ? (part1 >>> 7) | 0x80 : (part1 >>> 7) & 0x7F);
104+
case 5 : this.view.setUint8(offset+4, size !== 5 ? (part1 ) | 0x80 : (part1 ) & 0x7F);
105+
case 4 : this.view.setUint8(offset+3, size !== 4 ? (part0 >>> 21) | 0x80 : (part0 >>> 21) & 0x7F);
106+
case 3 : this.view.setUint8(offset+2, size !== 3 ? (part0 >>> 14) | 0x80 : (part0 >>> 14) & 0x7F);
107+
case 2 : this.view.setUint8(offset+1, size !== 2 ? (part0 >>> 7) | 0x80 : (part0 >>> 7) & 0x7F);
108+
case 1 : this.view.setUint8(offset , size !== 1 ? (part0 ) | 0x80 : (part0 ) & 0x7F);
122109
//? }
123110
}
124-
offset += size-1;
125-
//? if (NODE) {
126-
//? if (INLINE) {
127-
this.buffer[offset] &= 0x7F;
128-
//? } else {
129-
this.buffer.writeUint8(this.buffer.readUint8(offset, true) & 0x7F, offset, true);
130-
//? }
131-
//? } else {
132-
this.view.setUint8(offset, this.view.getUint8(offset) & 0x7F);
133-
//? }
134111
if (relative) {
135112
this.offset += size;
136113
return this;

0 commit comments

Comments
 (0)