Throw if calling the identity precompile (memoryCopy) failed

This commit is contained in:
Alex Beregszaszi 2016-12-02 13:18:39 +00:00
parent 3a01a87afe
commit 86d54c02cd
2 changed files with 3 additions and 1 deletions

View File

@ -5,6 +5,7 @@ Features:
* Optimizer: Some dead code elimination. * Optimizer: Some dead code elimination.
Bugfixes: Bugfixes:
* Code generator: throw if calling the identity precompile failed during memory (array) copying.
* Type checker: string literals that are not valid UTF-8 cannot be converted to string type * Type checker: string literals that are not valid UTF-8 cannot be converted to string type
### 0.4.6 (2016-11-22) ### 0.4.6 (2016-11-22)

View File

@ -312,7 +312,8 @@ void CompilerUtils::memoryCopy()
m_context << Instruction::DIV << u256(c_identityWordGas) << Instruction::MUL; m_context << Instruction::DIV << u256(c_identityWordGas) << Instruction::MUL;
m_context << u256(c_identityGas) << Instruction::ADD; m_context << u256(c_identityGas) << Instruction::ADD;
m_context << Instruction::CALL; m_context << Instruction::CALL;
m_context << Instruction::POP; // ignore return value m_context << Instruction::ISZERO;
m_context.appendConditionalJumpTo(m_context.errorTag());
} }
void CompilerUtils::splitExternalFunctionType(bool _leftAligned) void CompilerUtils::splitExternalFunctionType(bool _leftAligned)