From 1fb3da6b5325497ea18f17dc61cf50aed7bcfc95 Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Tue, 7 Aug 2018 13:54:34 -0700 Subject: Increment free memory pointer for internal Exchange functions that use asm --- .../src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'packages/contracts/src/2.0.0/protocol/Exchange/MixinAssetProxyDispatcher.sol') 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)) } } } -- cgit v1.2.3