diff options
Diffstat (limited to 'lib/abi.js')
-rw-r--r-- | lib/abi.js | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/abi.js b/lib/abi.js index 11141e28b..f94e97faf 100644 --- a/lib/abi.js +++ b/lib/abi.js @@ -89,7 +89,7 @@ var setupInputTypes = function () { /// Formats input value to byte representation of int /// If value is negative, return it's two's complement - /// If the value is floating point, it rounds it down + /// If the value is floating point, round it down /// @returns right-aligned byte representation of int var formatInt = function (value) { var padding = 32 * 2; @@ -177,12 +177,15 @@ var setupOutputTypes = function () { var formatInt = function (value) { // check if it's negative number // it it is, return two's complement - if (value.substr(0, 1).toLowerCase() === 'f') { + var firstBit = new BigNumber(value.substr(0, 1), 16).toString(2).substr(0, 1); + if (firstBit === '1') { return new BigNumber(value, 16).minus(new BigNumber('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16)).minus(1); } return new BigNumber(value, 16); }; + /// Formats big right-aligned input bytes to uint + /// @returns right-aligned input bytes formatted to uint var formatUInt = function (value) { return new BigNumber(value, 16); }; |