diff options
author | Amir Bandeali <abandeali1@gmail.com> | 2018-08-08 04:54:34 +0800 |
---|---|---|
committer | Amir Bandeali <abandeali1@gmail.com> | 2018-08-09 06:44:43 +0800 |
commit | 1fb3da6b5325497ea18f17dc61cf50aed7bcfc95 (patch) | |
tree | c9e533abce373fac3fcd4226f516e2b8e0426222 /packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol | |
parent | 970bef717e422ac79901300b56ac8f11d3593685 (diff) | |
download | dexon-sol-tools-1fb3da6b5325497ea18f17dc61cf50aed7bcfc95.tar dexon-sol-tools-1fb3da6b5325497ea18f17dc61cf50aed7bcfc95.tar.gz dexon-sol-tools-1fb3da6b5325497ea18f17dc61cf50aed7bcfc95.tar.bz2 dexon-sol-tools-1fb3da6b5325497ea18f17dc61cf50aed7bcfc95.tar.lz dexon-sol-tools-1fb3da6b5325497ea18f17dc61cf50aed7bcfc95.tar.xz dexon-sol-tools-1fb3da6b5325497ea18f17dc61cf50aed7bcfc95.tar.zst dexon-sol-tools-1fb3da6b5325497ea18f17dc61cf50aed7bcfc95.zip |
Increment free memory pointer for internal Exchange functions that use asm
Diffstat (limited to 'packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol')
-rw-r--r-- | packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol b/packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol index e9f882194..b34903668 100644 --- a/packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol +++ b/packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol @@ -159,18 +159,22 @@ contract MixinAssetProxyDispatcher is } /////// Call `assetProxy.transferFrom` using the constructed calldata /////// + let inputLen := sub(cdEnd, cdStart) let success := call( gas, // forward all gas assetProxy, // call address of asset proxy 0, // don't send any ETH cdStart, // pointer to start of input - sub(cdEnd, cdStart), // length of input + inputLen, // length of input cdStart, // write output over input 512 // reserve 512 bytes for output ) if iszero(success) { revert(cdStart, returndatasize()) } + + // Increment free memory pointer + mstore(64, add(cdStart, inputLen)) } } } |