From 086c044dc34dfc0f74fbe41f4ecb402b2cd34884 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 03:13:33 +0200 Subject: Merging upstream version 125.0.1. Signed-off-by: Daniel Baumann --- .../include/rlbox_wasm2c_sandbox.hpp | 30 +++++++++++++++------- 1 file changed, 21 insertions(+), 9 deletions(-) (limited to 'third_party/rlbox_wasm2c_sandbox') diff --git a/third_party/rlbox_wasm2c_sandbox/include/rlbox_wasm2c_sandbox.hpp b/third_party/rlbox_wasm2c_sandbox/include/rlbox_wasm2c_sandbox.hpp index cc6195d84e..d5f0403b6a 100644 --- a/third_party/rlbox_wasm2c_sandbox/include/rlbox_wasm2c_sandbox.hpp +++ b/third_party/rlbox_wasm2c_sandbox/include/rlbox_wasm2c_sandbox.hpp @@ -304,12 +304,13 @@ public: private: mutable typename RLBOX_WASM_MODULE_TYPE_CURR::instance_t wasm2c_instance{ 0 }; - struct w2c_env sandbox_memory_env; - struct w2c_wasi__snapshot__preview1 wasi_env; + struct w2c_env sandbox_memory_env{ 0 }; + struct w2c_wasi__snapshot__preview1 wasi_env{ 0 }; bool instance_initialized = false; - wasm_rt_memory_t sandbox_memory_info; - mutable wasm_rt_funcref_table_t sandbox_callback_table; - uintptr_t heap_base; + bool minwasi_init_inst_succeeded = false; + wasm_rt_memory_t sandbox_memory_info{ 0 }; + mutable wasm_rt_funcref_table_t sandbox_callback_table{ 0 }; + uintptr_t heap_base = 0; size_t return_slot_size = 0; T_PointerType return_slot = 0; mutable std::vector callback_free_list; @@ -505,7 +506,7 @@ public: FALLIBLE_DYNAMIC_CHECK( infallible, minwasi_init_succeeded, "Could not initialize min wasi"); - const bool minwasi_init_inst_succeeded = minwasi_init_instance(&wasi_env); + minwasi_init_inst_succeeded = minwasi_init_instance(&wasi_env); FALLIBLE_DYNAMIC_CHECK( infallible, minwasi_init_inst_succeeded, "Could not initialize min wasi instance"); @@ -567,9 +568,20 @@ public: RLBOX_WASM_MODULE_TYPE_CURR::free_instance(&wasm2c_instance); } - destroy_wasm2c_memory(&sandbox_memory_info); - wasm_rt_free_funcref_table(&sandbox_callback_table); - minwasi_cleanup_instance(&wasi_env); + if (sandbox_memory_info.data) { + destroy_wasm2c_memory(&sandbox_memory_info); + sandbox_memory_info.data = nullptr; + } + + if (sandbox_callback_table.data) { + wasm_rt_free_funcref_table(&sandbox_callback_table); + sandbox_callback_table.data = nullptr; + } + + if (minwasi_init_inst_succeeded) { + minwasi_init_inst_succeeded = false; + minwasi_cleanup_instance(&wasi_env); + } } template -- cgit v1.2.3