Properly skip cleanup if only enlarging storage array.

This commit is contained in:
chriseth 2018-03-09 14:06:54 +01:00
parent 30443f3a3e
commit 0649f900ca
2 changed files with 3 additions and 2 deletions

View File

@ -4,6 +4,7 @@ Features:
Bugfixes:
* Code Generator: Properly skip unneeded storgae array cleanup when not reducing length.

View File

@ -741,10 +741,10 @@ void ArrayUtils::resizeDynamicArray(ArrayType const& _typeIn) const
if (_type.isByteArray())
// For a "long" byte array, store length as 2*length+1
_context << Instruction::DUP1 << Instruction::ADD << u256(1) << Instruction::ADD;
_context<< Instruction::DUP4 << Instruction::SSTORE;
_context << Instruction::DUP4 << Instruction::SSTORE;
// skip if size is not reduced
_context << Instruction::DUP2 << Instruction::DUP2
<< Instruction::ISZERO << Instruction::GT;
<< Instruction::GT << Instruction::ISZERO;
_context.appendConditionalJumpTo(resizeEnd);
// size reduced, clear the end of the array