diff --git a/contracts/vault/VaultBase.sol b/contracts/vault/VaultBase.sol index 3c639a8..e62ecce 100644 --- a/contracts/vault/VaultBase.sol +++ b/contracts/vault/VaultBase.sol @@ -208,7 +208,7 @@ abstract contract VaultBase { Recipient recipient, uint128 amount ) internal { - Lock memory lock = _locks[controller][fund]; + Lock storage lock = _locks[controller][fund]; require(lock.status() == LockStatus.Locked, VaultFundNotLocked()); Account storage account = _accounts[controller][fund][recipient]; @@ -216,6 +216,8 @@ abstract contract VaultBase { account.balance.designated -= amount; + lock.value -= amount; + _token.safeTransfer(address(0xdead), amount); } diff --git a/test/Vault.tests.js b/test/Vault.tests.js index bdffdc9..dd9561e 100644 --- a/test/Vault.tests.js +++ b/test/Vault.tests.js @@ -641,7 +641,10 @@ describe("Vault", function () { await vault.deposit(fund, account.address, 30) await vault.transfer(fund, account.address, account2.address, 20) await vault.transfer(fund, account2.address, account3.address, 10) - // some tokens are burned + // some designated tokens are burned + await vault.designate(fund, account2.address, 10) + await vault.burnDesignated(fund, account2.address, 5) + // some account is burned await vault.burnAccount(fund, account2.address) await expire() // some tokens are withdrawn