Skip to content
This repository has been archived by the owner on Jun 22, 2021. It is now read-only.

Commit

Permalink
Merge pull request #80 from uber/fix-i64
Browse files Browse the repository at this point in the history
Fix i64 coercion from large numbers
  • Loading branch information
kriskowal committed Oct 22, 2015
2 parents e917b4f + bb3f1c5 commit 0601fdf
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
2 changes: 1 addition & 1 deletion i64.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ I64RW.prototype.writeInto = function writeInto(value, buffer, offset) {
value.copy(buffer, offset, 0, 8);
return new bufrw.WriteResult(null, offset + 8);
} else if (typeof value === 'number') {
buffer.writeInt32BE(value / Math.pow(32), offset, true);
buffer.writeInt32BE(value / Math.pow(2, 32), offset, true);
buffer.writeInt32BE(value, offset + 4, true);
return new bufrw.WriteResult(null, offset + 8);
} else if (Array.isArray(value)) {
Expand Down
11 changes: 10 additions & 1 deletion test/i64.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ test('fail to coerce object bad lo value', function t(assert) {
assert.end();
});

test('coerce number', function t(assert) {
test('coerce small number', function t(assert) {
var buffer = new Buffer(8);
var res = bufferRW.writeInto(10, buffer, 0);
assert.ifError(res.err, 'write into buffer');
Expand All @@ -146,6 +146,15 @@ test('coerce number', function t(assert) {
assert.end();
});

test('coerce large number', function t(assert) {
var buffer = new Buffer(8);
var res = bufferRW.writeInto(Math.pow(2, 50), buffer, 0);
assert.ifError(res.err, 'write into buffer');
assert.equals(res.offset, 8, 'offset after write');
assert.deepEquals(buffer, new Buffer('0004000000000000', 'hex'), 'written value');
assert.end();
});

test('coerce array of bytes', function t(assert) {
var buffer = new Buffer(8);
var res = bufferRW.writeInto([1, 2, 3, 4, 5, 6, 7, 8], buffer, 0);
Expand Down

0 comments on commit 0601fdf

Please sign in to comment.