From 05d705bece8a9d79d45f1f6e652e0d0af0d257cd Mon Sep 17 00:00:00 2001 From: Thrilok Kumar Date: Wed, 6 May 2020 07:05:34 +0530 Subject: [PATCH] Fixed bugs --- contracts/connectors/curve.sol | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/contracts/connectors/curve.sol b/contracts/connectors/curve.sol index aa74907..93ebdd1 100644 --- a/contracts/connectors/curve.sol +++ b/contracts/connectors/curve.sol @@ -151,6 +151,8 @@ contract CurveProtocol is CurveHelpers { uint[4] memory _amts; _amts[uint(getTokenI(token))] = _amt; + tokenContract.approve(getCurveSwapAddr(), _amt); + uint _amt18 = convertTo18(tokenContract.decimals(), _amt); uint _slippageAmt = wmul(unitAmt, _amt18); @@ -175,21 +177,20 @@ contract CurveProtocol is CurveHelpers { uint _amt = getUint(getId, amt); int128 tokenId = getTokenI(token); - uint[4] memory _amts; - _amts[uint(getTokenI(token))] = _amt; - TokenInterface curveTokenContract = TokenInterface(getCurveTokenAddr()); ICurveZap curveZap = ICurveZap(getCurveZapAddr()); - uint _curveAmt = _amt == uint(-1) ? - curveTokenContract.balanceOf(address(this)) : - ICurve(getCurveSwapAddr()).calc_token_amount(_amts, false); + uint _curveAmt; + if (_amt == uint(-1)) { + _curveAmt = curveTokenContract.balanceOf(address(this)); + _amt = curveZap.calc_withdraw_one_coin(_curveAmt, tokenId); + } else { + uint[4] memory _amts; + _amts[uint(tokenId)] = _amt; + _curveAmt = ICurve(getCurveSwapAddr()).calc_token_amount(_amts, false); + } - _amt = _amt == uint(-1) ? curveZap.calc_withdraw_one_coin(_curveAmt, tokenId) : _amt; - - _amts[uint(tokenId)] = _amt; - - curveTokenContract.approve(getCurveSwapAddr(), _curveAmt); + curveTokenContract.approve(address(curveZap), _curveAmt); uint _amt18 = convertTo18(TokenInterface(token).decimals(), _amt); uint _slippageAmt = wmul(unitAmt, _amt18);