aboutsummaryrefslogtreecommitdiffstats
path: root/libsolidity/codegen/CompilerUtils.cpp
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2016-12-02 21:18:39 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2016-12-02 21:18:39 +0800
commit86d54c02cdebba32a6a8fba1d74bad17667d46cd (patch)
treeb914f7c105b618c48e6da10a46cc7572fcd44203 /libsolidity/codegen/CompilerUtils.cpp
parent3a01a87afe3468421f31aa5097796dcc88e37e26 (diff)
downloaddexon-solidity-86d54c02cdebba32a6a8fba1d74bad17667d46cd.tar.gz
dexon-solidity-86d54c02cdebba32a6a8fba1d74bad17667d46cd.tar.zst
dexon-solidity-86d54c02cdebba32a6a8fba1d74bad17667d46cd.zip
Throw if calling the identity precompile (memoryCopy) failed
Diffstat (limited to 'libsolidity/codegen/CompilerUtils.cpp')
-rw-r--r--libsolidity/codegen/CompilerUtils.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/libsolidity/codegen/CompilerUtils.cpp b/libsolidity/codegen/CompilerUtils.cpp
index d5361ac6..a8299626 100644
--- a/libsolidity/codegen/CompilerUtils.cpp
+++ b/libsolidity/codegen/CompilerUtils.cpp
@@ -312,7 +312,8 @@ void CompilerUtils::memoryCopy()
m_context << Instruction::DIV << u256(c_identityWordGas) << Instruction::MUL;
m_context << u256(c_identityGas) << Instruction::ADD;
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)