From f8e94861b29c4e56942b10434d346765734fbb0c Mon Sep 17 00:00:00 2001 From: sonninnos <45124675+sonninnos@users.noreply.github.com> Date: Sun, 15 Jan 2023 17:06:56 +0200 Subject: [PATCH] Core option setting type checks (#14852) --- menu/menu_driver.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index ab889b73c72..eb4eccef4b0 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -398,6 +398,19 @@ void menu_entry_get(menu_entry_t *entry, size_t stack_idx, if (cbs->setting && cbs->setting->type) entry->setting_type = cbs->setting->type; + /* Exceptions without cbs->setting->type */ + if (!entry->setting_type) + { + switch (entry->type) + { + case MENU_SETTING_ACTION_CORE_LOCK: + entry->setting_type = ST_BOOL; + break; + default: + break; + } + } + if (cbs->checked) entry->flags |= MENU_ENTRY_FLAG_CHECKED; @@ -476,9 +489,11 @@ void menu_entry_get(menu_entry_t *entry, size_t stack_idx, core_option_manager_t *coreopts = NULL; size_t option_index = entry->type - MENU_SETTINGS_CORE_OPTION_START; retroarch_ctl(RARCH_CTL_CORE_OPTIONS_LIST_GET, &coreopts); - option = (struct core_option*)&coreopts->opts[option_index]; - if (option->vals->size == 2) + if (coreopts) + option = (struct core_option*)&coreopts->opts[option_index]; + + if (option && option->vals && option->vals->size == 2) entry->setting_type = ST_BOOL; }