Skip to content

Commit 9fae592

Browse files
committed
Add a test case to cover out of range integer error
1 parent 1cf4a9f commit 9fae592

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

src/statement.cc

+5-5
Original file line numberDiff line numberDiff line change
@@ -205,13 +205,13 @@ template <class T> Values::Field*
205205
return new Values::Float(pos, source.ToNumber().DoubleValue());
206206
}
207207
else if (source.IsBigInt()) {
208-
bool hadLoss;
209-
auto ret = new Values::Integer(pos, source.As<Napi::BigInt>().Int64Value(&hadLoss));
208+
bool lossless;
209+
auto ret = new Values::Integer(pos, source.As<Napi::BigInt>().Int64Value(&lossless));
210210

211-
if (!hadLoss) {
212-
Napi::TypeError::New(
211+
if (!lossless) {
212+
Napi::RangeError::New(
213213
source.Env(),
214-
"Converting BigInt to internal representation results is not lossless.")
214+
"Value can't be losslessly converted to 64 bit integer.")
215215
.ThrowAsJavaScriptException();
216216
return NULL;
217217
}

test/other_objects.test.js

+14
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,18 @@ describe('data types', function() {
114114
});
115115
});
116116

117+
it('should fail to serialize larger numbers', function (done) {
118+
const bigint = 0xffffffffffffffffffffn; // 80 bits
119+
let error;
120+
121+
try {
122+
db.run('INSERT INTO bigint_table VALUES(?)', bigint);
123+
} catch (err) {
124+
error = err;
125+
} finally {
126+
assert.notEqual(error, undefined);
127+
done();
128+
}
129+
})
130+
117131
});

0 commit comments

Comments
 (0)