From d5e4af482fc0dc6925cbcdcbf83bf3632951e660 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 7 Mar 2024 05:26:40 +0000 Subject: [PATCH] Fix view memory leaks --- applications/system/js_app/modules/js_keyboard.c | 14 ++++++++------ applications/system/js_app/modules/js_submenu.c | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/applications/system/js_app/modules/js_keyboard.c b/applications/system/js_app/modules/js_keyboard.c index 6c546039f..dc7de0648 100644 --- a/applications/system/js_app/modules/js_keyboard.c +++ b/applications/system/js_app/modules/js_keyboard.c @@ -187,12 +187,14 @@ static void* js_keyboard_create(struct mjs* mjs, mjs_val_t* object) { } static void js_keyboard_destroy(void* inst) { - JsKeyboardInst* insts = (JsKeyboardInst*)inst; - byte_input_free(insts->byte_input); - text_input_free(insts->text_input); - view_dispatcher_free(insts->view_dispatcher); - free(insts->data); - free(insts); + JsKeyboardInst* keyboard = (JsKeyboardInst*)inst; + view_dispatcher_remove_view(keyboard->view_dispatcher, JsKeyboardViewByteInput); + byte_input_free(keyboard->byte_input); + view_dispatcher_remove_view(keyboard->view_dispatcher, JsKeyboardViewTextInput); + text_input_free(keyboard->text_input); + view_dispatcher_free(keyboard->view_dispatcher); + free(keyboard->data); + free(keyboard); } static const JsModuleDescriptor js_keyboard_desc = { diff --git a/applications/system/js_app/modules/js_submenu.c b/applications/system/js_app/modules/js_submenu.c index 88478364b..b87f34fa8 100644 --- a/applications/system/js_app/modules/js_submenu.c +++ b/applications/system/js_app/modules/js_submenu.c @@ -129,6 +129,7 @@ static void* js_submenu_create(struct mjs* mjs, mjs_val_t* object) { static void js_submenu_destroy(void* inst) { JsSubmenuInst* submenu = inst; + view_dispatcher_remove_view(submenu->view_dispatcher, JsSubmenuViewSubmenu); submenu_free(submenu->submenu); view_dispatcher_free(submenu->view_dispatcher); free(submenu);