Skip to content

Commit 66be598

Browse files
committed
Fixed serialization order of sfixed64, fixes #536
1 parent 67449db commit 66be598

7 files changed

+45
-7
lines changed

dist/protobuf.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.min.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/protobuf.min.js.gz

-3 Bytes
Binary file not shown.

dist/protobuf.min.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/writer.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ WriterPrototype.fixed64 = function write_fixed64(value) {
324324
*/
325325
WriterPrototype.sfixed64 = function write_sfixed64(value) {
326326
var bits = LongBits.from(value).zzEncode();
327-
return this.push(writeFixed32, 4, bits.hi).push(writeFixed32, 4, bits.lo);
327+
return this.push(writeFixed32, 4, bits.lo).push(writeFixed32, 4, bits.hi);
328328
};
329329

330330
var writeFloat = typeof Float32Array !== 'undefined'

tests/sfixed64-grpc.js

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
var tape = require("tape");
2+
3+
var protobuf = require("..");
4+
5+
tape.test("sfixed64 for grpc", function(test) {
6+
7+
var root = protobuf.Root.fromJSON({
8+
nested: {
9+
test: {
10+
nested: {
11+
Test: {
12+
fields: {
13+
int_64: {
14+
type: 'sfixed64',
15+
id: 1
16+
}
17+
}
18+
}
19+
}
20+
}
21+
}
22+
});
23+
24+
var Test = root.lookup("test.Test");
25+
26+
var buffer = Test.encode({
27+
int_64: '-9095674951825889465'
28+
}).finish();
29+
30+
test.equal(buffer.length, 9, "should encode a total of 9 bytes");
31+
test.equal(buffer[0], 9, "should encode id 1, wireType 1");
32+
33+
var decoded = Test.decode(buffer);
34+
test.ok(decoded.int_64 == '-9095674951825889465', "should decode back the original value");
35+
36+
test.end();
37+
38+
});

0 commit comments

Comments
 (0)