diff --git a/menu/menu_entries_cbs.c b/menu/menu_entries_cbs.c index 0f5c02598d..4f7a99f6f8 100644 --- a/menu/menu_entries_cbs.c +++ b/menu/menu_entries_cbs.c @@ -479,11 +479,11 @@ static int action_ok_path_use_directory(const char *path, if (!setting) return -1; - if (setting->type == ST_DIR) - { - menu_action_setting_set_current_string(setting, menu_path); - menu_list_pop_stack_by_needle(driver.menu->menu_list, setting->name); - } + if (setting->type != ST_DIR) + return -1; + + menu_action_setting_set_current_string(setting, menu_path); + menu_list_pop_stack_by_needle(driver.menu->menu_list, setting->name); return 0; } diff --git a/menu/menu_list.c b/menu/menu_list.c index 2469f3b292..4ee71e052a 100644 --- a/menu/menu_list.c +++ b/menu/menu_list.c @@ -266,14 +266,14 @@ void menu_list_pop_stack(menu_list_t *list) if (!list) return; - if (file_list_get_size(list->menu_stack) > 1) - { - if (driver.menu_ctx->list_cache) - driver.menu_ctx->list_cache(false, 0); + if (file_list_get_size(list->menu_stack) <= 1) + return; - menu_list_pop(list->menu_stack, &driver.menu->selection_ptr); - driver.menu->need_refresh = true; - } + if (driver.menu_ctx->list_cache) + driver.menu_ctx->list_cache(false, 0); + + menu_list_pop(list->menu_stack, &driver.menu->selection_ptr); + driver.menu->need_refresh = true; } void menu_list_pop_stack_by_needle(menu_list_t *list, @@ -288,6 +288,7 @@ void menu_list_pop_stack_by_needle(menu_list_t *list, driver.menu->need_refresh = true; file_list_get_last(list->menu_stack, &path, &label, &type); + while (strcmp(needle, label) == 0) { menu_list_pop(list->menu_stack, &driver.menu->selection_ptr);