From e11ded4992a6eb768fd5b3c56cafe896a18df9a6 Mon Sep 17 00:00:00 2001 From: James Benton Date: Mon, 10 Jan 2022 14:08:55 +0000 Subject: [PATCH] nn_swkbd: Fix potential memory leaks. --- libraries/nn_swkbd/nn_swkbd.cpp | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/libraries/nn_swkbd/nn_swkbd.cpp b/libraries/nn_swkbd/nn_swkbd.cpp index 91a73b31..3e5be64e 100644 --- a/libraries/nn_swkbd/nn_swkbd.cpp +++ b/libraries/nn_swkbd/nn_swkbd.cpp @@ -189,7 +189,15 @@ Create(const CreateArg &args) out: if (!result) { - MEMDestroyExpHeap(sHeapHandle); + if (sModuleHandle) { + OSDynLoad_Release(sModuleHandle); + sModuleHandle = NULL; + } + + if (sHeapHandle) { + MEMDestroyExpHeap(sHeapHandle); + sHeapHandle = NULL; + } } OSDynLoad_SetAllocator(prevDynLoadAlloc, prevDynLoadFree); @@ -247,9 +255,17 @@ ConfirmUnfixAll() void Destroy() { - return reinterpret_cast - (sDestroy) - (); + reinterpret_cast(sDestroy)(); + + if (sModuleHandle) { + OSDynLoad_Release(sModuleHandle); + sModuleHandle = NULL; + } + + if (sHeapHandle) { + MEMDestroyExpHeap(sHeapHandle); + sHeapHandle = NULL; + } } bool