aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CompilerContext.h2
-rw-r--r--ExpressionCompiler.cpp3
2 files changed, 3 insertions, 2 deletions
diff --git a/CompilerContext.h b/CompilerContext.h
index dbf3dcd4..573e0b57 100644
--- a/CompilerContext.h
+++ b/CompilerContext.h
@@ -98,7 +98,7 @@ public:
eth::AssemblyItem appendJumpToNew() { return m_asm.appendJump().tag(); }
/// Appends a JUMP to a tag already on the stack
CompilerContext& appendJump(eth::AssemblyItem::JumpType _jumpType = eth::AssemblyItem::JumpType::Ordinary);
- /// Appends a JUMP to an "ErrorTag"
+ /// Returns an "ErrorTag"
eth::AssemblyItem errorTag() { return m_asm.errorTag(); }
/// Appends a JUMP to a specific tag
CompilerContext& appendJumpTo(eth::AssemblyItem const& _tag) { m_asm.appendJump(_tag); return *this; }
diff --git a/ExpressionCompiler.cpp b/ExpressionCompiler.cpp
index 063af7ce..c8aece85 100644
--- a/ExpressionCompiler.cpp
+++ b/ExpressionCompiler.cpp
@@ -1104,8 +1104,9 @@ void ExpressionCompiler::appendExternalFunctionCall(
else
m_context << eth::Instruction::CALL;
+ //Propagate error condition (if CALL pushes 0 on stack).
m_context << eth::Instruction::ISZERO;
- auto tag = m_context.appendConditionalJumpTo(m_context.errorTag());// if CALL leaves 0.
+ auto tag = m_context.appendConditionalJumpTo(m_context.errorTag());
if (_functionType.valueSet())
m_context << eth::Instruction::POP;