diff --git a/lib/serializer/src/SerializerValidation.js b/lib/serializer/src/SerializerValidation.js index 9aae09f..f0f16a5 100644 --- a/lib/serializer/src/SerializerValidation.js +++ b/lib/serializer/src/SerializerValidation.js @@ -109,10 +109,20 @@ var _my = { } this.no_overflow64(value, field_name, unsigned); + // BigInteger#isBigInteger https://github.com/cryptocoinjs/bigi/issues/20 + // (code copied from no_overflow64) + if (value.t !== undefined && value.s !== undefined) { + value = value.toString(); + } if (typeof value === "number") { value = "" + value; } - return Long.fromString(value, unsigned); + value = value.trim(); + var long_value = Long.fromString(value, unsigned); + if (long_value.toString() !== value) { + throw new Error(`Unable to safely convert ${field_name} ${value} to long`); + } + return long_value; }, to_string(value, field_name = "") {