From e3bd21f4dd5f6f76421ea7a0e8098b2bf97665b6 Mon Sep 17 00:00:00 2001 From: chriseth Date: Mon, 20 Apr 2015 14:09:41 +0200 Subject: Fixed byte alignment for return type of ripemd160 built-in contract. --- ExpressionCompiler.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/ExpressionCompiler.cpp b/ExpressionCompiler.cpp index 7ea71a7a..02f22593 100644 --- a/ExpressionCompiler.cpp +++ b/ExpressionCompiler.cpp @@ -1066,7 +1066,13 @@ void ExpressionCompiler::appendExternalFunctionCall(FunctionType const& _functio m_context << eth::Instruction::POP; m_context << eth::Instruction::POP; // pop contract address - if (firstType) + if (_functionType.getLocation() == FunctionType::Location::RIPEMD160) + { + // fix: built-in contract returns right-aligned data + CompilerUtils(m_context).loadFromMemory(0, IntegerType(160), false, true); + appendTypeConversion(IntegerType(160), FixedBytesType(20)); + } + else if (firstType) CompilerUtils(m_context).loadFromMemory(0, *firstType, false, true); } -- cgit v1.2.3