aboutsummaryrefslogtreecommitdiffstats
path: root/packages/utils/src/abi_encoder/evm_data_types/int.ts
diff options
context:
space:
mode:
authorFabio B <kandinsky454@protonmail.ch>2019-02-06 18:23:21 +0800
committerGitHub <noreply@github.com>2019-02-06 18:23:21 +0800
commit8b5bb97537b5c13815928ec0939937dbd2566488 (patch)
tree790b0cb50379d748ade66adcb3e942d6c5af1578 /packages/utils/src/abi_encoder/evm_data_types/int.ts
parentb5eb47f60930d040b94177023cd147834f98db1d (diff)
parent3d7a635543b74eddf303ab4b0181ecf47dc29591 (diff)
downloaddexon-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.ts12
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}`;
}