|
|
@ -506,12 +506,12 @@ template <class Ext> dev::bytesConstRef dev::eth::VM::go(Ext& _ext, OnOpFunc con |
|
|
|
{ |
|
|
|
unsigned mf = (unsigned)m_stack.back(); |
|
|
|
m_stack.pop_back(); |
|
|
|
u256 cf = (unsigned)m_stack.back(); |
|
|
|
u256 cf = m_stack.back(); |
|
|
|
m_stack.pop_back(); |
|
|
|
unsigned l = (unsigned)m_stack.back(); |
|
|
|
m_stack.pop_back(); |
|
|
|
unsigned el = cf + l > _ext.data.size() ? _ext.data.size() < cf ? 0 : _ext.data.size() - cf : l; |
|
|
|
memcpy(m_temp.data() + mf, _ext.data.data() + cf, el); |
|
|
|
unsigned el = cf + l > (u256)_ext.data.size() ? (u256)_ext.data.size() < cf ? 0 : _ext.data.size() - (unsigned)cf : l; |
|
|
|
memcpy(m_temp.data() + mf, _ext.data.data() + (unsigned)cf, el); |
|
|
|
memset(m_temp.data() + mf + el, 0, l - el); |
|
|
|
break; |
|
|
|
} |
|
|
@ -527,7 +527,7 @@ template <class Ext> dev::bytesConstRef dev::eth::VM::go(Ext& _ext, OnOpFunc con |
|
|
|
unsigned l = (unsigned)m_stack.back(); |
|
|
|
m_stack.pop_back(); |
|
|
|
unsigned el = cf + l > (u256)_ext.code.size() ? (u256)_ext.code.size() < cf ? 0 : _ext.code.size() - (unsigned)cf : l; |
|
|
|
memcpy(m_temp.data() + mf, _ext.code.data() + cf, el); |
|
|
|
memcpy(m_temp.data() + mf, _ext.code.data() + (unsigned)cf, el); |
|
|
|
memset(m_temp.data() + mf + el, 0, l - el); |
|
|
|
break; |
|
|
|
} |
|
|
@ -545,7 +545,7 @@ template <class Ext> dev::bytesConstRef dev::eth::VM::go(Ext& _ext, OnOpFunc con |
|
|
|
unsigned l = (unsigned)m_stack.back(); |
|
|
|
m_stack.pop_back(); |
|
|
|
unsigned el = cf + l > (u256)_ext.codeAt(a).size() ? (u256)_ext.codeAt(a).size() < cf ? 0 : _ext.codeAt(a).size() - (unsigned)cf : l; |
|
|
|
memcpy(m_temp.data() + mf, _ext.codeAt(a).data() + cf, el); |
|
|
|
memcpy(m_temp.data() + mf, _ext.codeAt(a).data() + (unsigned)cf, el); |
|
|
|
memset(m_temp.data() + mf + el, 0, l - el); |
|
|
|
break; |
|
|
|
} |
|
|
|