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);