20b19d4599
Our wrapping optimization relied on the caller context having a TRY block, but each context (including internal calls!) has an exception handling stack of its own, which means that for an invocation stack of entry A.someMethodFromEntry() # this one has a TRY A.internalMethodViaCALL() # this one doesn't B.someMethod() we get `HasTryBlock() == false` for `A.internalMethodViaCALL()` context, which leads to missing wrapper and missing rollbacks if B is to THROW. What this patch does instead is it checks for any context within contract boundaries. Fixes #3045. Signed-off-by: Roman Khimov <roman@nspcc.ru> |
||
---|---|---|
.. | ||
contract | ||
crypto | ||
interopnames | ||
iterator | ||
runtime | ||
storage | ||
context.go | ||
doc.go | ||
gas_price.go |