From c32073d200a84abb2b278b34db40ecdfa6a3b833 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=9A=93?= Date: Sun, 20 Apr 2025 17:48:19 -0400 Subject: [PATCH] Fix memory leak in `dfree` implementation in libretro builds --- binding-sandbox/binding-util.cpp | 1 - binding-sandbox/binding-util.h | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/binding-sandbox/binding-util.cpp b/binding-sandbox/binding-util.cpp index d13ae71f..9900700e 100644 --- a/binding-sandbox/binding-util.cpp +++ b/binding-sandbox/binding-util.cpp @@ -33,7 +33,6 @@ void mkxp_sandbox::set_private_data(VALUE obj, void *ptr) { // Free the old value if it already exists (initialize called twice?) if (*(wasm_ptr_t *)(**sb() + data) != 0 && *(void **)(**sb() + *(wasm_ptr_t *)(**sb() + data)) != ptr) { sb()->rtypeddata_dfree(obj, *(wasm_ptr_t *)(**sb() + data)); - sb()->sandbox_free(*(wasm_ptr_t *)(**sb() + data)); *(wasm_ptr_t *)(**sb() + data) = 0; } diff --git a/binding-sandbox/binding-util.h b/binding-sandbox/binding-util.h index 6546a9df..5ce6d830 100644 --- a/binding-sandbox/binding-util.h +++ b/binding-sandbox/binding-util.h @@ -59,6 +59,7 @@ #define SANDBOX_DEF_DFREE(T) \ static void dfree(wasm_ptr_t _buf) { \ delete *(T **)(**mkxp_sandbox::sb() + _buf); \ + mkxp_sandbox::sb()->sandbox_free(_buf); \ } #define SANDBOX_DEF_LOAD(T) \