diff --git a/CHANGELOG.md b/CHANGELOG.md index d1acce5..968fa6d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ ## [6.3.0] - unreleased +- Changed: [[#293](https://github.com/ethereum/evmc/pull/293)] + In C++ API `evmc::result::raw()` renamed to `evmc::result::release_raw()`. - Fixed: [[#261](https://github.com/ethereum/evmc/issues/261), [#263](https://github.com/ethereum/evmc/pull/263)] diff --git a/include/evmc/evmc.hpp b/include/evmc/evmc.hpp index d460266..cffeeef 100644 --- a/include/evmc/evmc.hpp +++ b/include/evmc/evmc.hpp @@ -56,9 +56,15 @@ public: return *this; } - /// Returns the raw copy of evmc_result, - /// releases the ownership of the resources and invalidates this object. - evmc_result raw() noexcept + /// Releases the ownership and returns the raw copy of evmc_result. + /// + /// This method drops the ownership of the result + /// (result's resources are not going to be released when this object is destructed). + /// It is the caller's responsibility having the returned copy of the result to release it. + /// This object MUST NOT be used after this method is invoked. + /// + /// @return The copy of this object converted to raw evmc_result. + evmc_result release_raw() noexcept { const auto out = evmc_result{*this}; // Copy data. this->release = nullptr; // Disable releasing of this object. @@ -321,7 +327,7 @@ inline void selfdestruct(evmc_context* h, } inline evmc_result call(evmc_context* h, const evmc_message* msg) noexcept { - return static_cast(h)->call(*msg).raw(); + return static_cast(h)->call(*msg).release_raw(); } inline evmc_tx_context get_tx_context(evmc_context* h) noexcept { diff --git a/test/unittests/test_cpp.cpp b/test/unittests/test_cpp.cpp index cb813f5..b233d3f 100644 --- a/test/unittests/test_cpp.cpp +++ b/test/unittests/test_cpp.cpp @@ -141,7 +141,7 @@ TEST(cpp, result_raii) EXPECT_EQ(raii_result.gas_left, 0); raii_result.gas_left = -1; - auto raw_result2 = raii_result.raw(); + auto raw_result2 = raii_result.release_raw(); EXPECT_EQ(raw_result2.status_code, EVMC_INTERNAL_ERROR); EXPECT_EQ(raw_result.status_code, EVMC_INTERNAL_ERROR); EXPECT_EQ(raw_result2.gas_left, -1);