Browse Source

Fix stackoverflow bug in VM

cl-refactor
Christoph Jentzsch 10 years ago
parent
commit
b1c6776429
  1. 7
      libevm/VM.h

7
libevm/VM.h

@ -206,7 +206,9 @@ template <class Ext> dev::bytesConstRef dev::eth::VM::go(Ext& _ext, OnOpFunc con
{
unsigned n = (unsigned)inst - (unsigned)Instruction::LOG0;
require(n + 2);
runGas = c_logGas + c_logTopicGas * n + c_logDataGas * m_stack[m_stack.size() - 2];
runGas = m_stack[m_stack.size() - 2];
runGas *= c_logDataGas;
runGas += c_logGas + c_logTopicGas * n;
newTempSize = memNeed(m_stack[m_stack.size() - 1], m_stack[m_stack.size() - 2]);
break;
}
@ -214,7 +216,8 @@ template <class Ext> dev::bytesConstRef dev::eth::VM::go(Ext& _ext, OnOpFunc con
case Instruction::CALL:
case Instruction::CALLCODE:
require(7);
runGas = c_callGas + m_stack[m_stack.size() - 1];
runGas = m_stack[m_stack.size() - 1];
runGas += c_callGas;
newTempSize = std::max(memNeed(m_stack[m_stack.size() - 6], m_stack[m_stack.size() - 7]), memNeed(m_stack[m_stack.size() - 4], m_stack[m_stack.size() - 5]));
break;

Loading…
Cancel
Save