diff options
author | Fabio B <kandinsky454@protonmail.ch> | 2019-02-06 18:23:21 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-06 18:23:21 +0800 |
commit | 8b5bb97537b5c13815928ec0939937dbd2566488 (patch) | |
tree | 790b0cb50379d748ade66adcb3e942d6c5af1578 /packages/utils/src/abi_encoder/evm_data_types/int.ts | |
parent | b5eb47f60930d040b94177023cd147834f98db1d (diff) | |
parent | 3d7a635543b74eddf303ab4b0181ecf47dc29591 (diff) | |
download | dexon-0x-contracts-8b5bb97537b5c13815928ec0939937dbd2566488.tar dexon-0x-contracts-8b5bb97537b5c13815928ec0939937dbd2566488.tar.gz dexon-0x-contracts-8b5bb97537b5c13815928ec0939937dbd2566488.tar.bz2 dexon-0x-contracts-8b5bb97537b5c13815928ec0939937dbd2566488.tar.lz dexon-0x-contracts-8b5bb97537b5c13815928ec0939937dbd2566488.tar.xz dexon-0x-contracts-8b5bb97537b5c13815928ec0939937dbd2566488.tar.zst dexon-0x-contracts-8b5bb97537b5c13815928ec0939937dbd2566488.zip |
Merge pull request #1587 from 0xProject/fix/abiEncoder/DefaultTypesOnNullInput
Handle ABI decoding NULL for all data types
Diffstat (limited to 'packages/utils/src/abi_encoder/evm_data_types/int.ts')
-rw-r--r-- | packages/utils/src/abi_encoder/evm_data_types/int.ts | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/packages/utils/src/abi_encoder/evm_data_types/int.ts b/packages/utils/src/abi_encoder/evm_data_types/int.ts index f8be1f778..02278f666 100644 --- a/packages/utils/src/abi_encoder/evm_data_types/int.ts +++ b/packages/utils/src/abi_encoder/evm_data_types/int.ts @@ -15,6 +15,7 @@ export class IntDataType extends AbstractBlobDataType { private static readonly _SIZE_KNOWN_AT_COMPILE_TIME: boolean = true; private static readonly _MAX_WIDTH: number = 256; private static readonly _DEFAULT_WIDTH: number = IntDataType._MAX_WIDTH; + private static readonly _DEFAULT_VALUE = new BigNumber(0); private readonly _width: number; private readonly _minValue: BigNumber; private readonly _maxValue: BigNumber; @@ -50,13 +51,20 @@ export class IntDataType extends AbstractBlobDataType { public decodeValue(calldata: RawCalldata): BigNumber | number { const valueBuf = calldata.popWord(); const value = EncoderMath.safeDecodeNumericValue(valueBuf, this._minValue, this._maxValue); - const numberOfBytesInUint8 = 8; - if (this._width === numberOfBytesInUint8) { + if (this._width === constants.NUMBER_OF_BYTES_IN_INT8) { return value.toNumber(); } return value; } + public getDefaultValue(): BigNumber | number { + const defaultValue = IntDataType._DEFAULT_VALUE; + if (this._width === constants.NUMBER_OF_BYTES_IN_INT8) { + return defaultValue.toNumber(); + } + return defaultValue; + } + public getSignatureType(): string { return `${SolidityTypes.Int}${this._width}`; } |