From 2c2aaec10758e3886fecda853487f1cf8df68efa Mon Sep 17 00:00:00 2001 From: twinaphex Date: Tue, 1 Dec 2015 03:07:16 +0100 Subject: [PATCH] Don't use global->cheat outside cheats.c --- cheats.c | 21 ++++++++++++++++++++- cheats.h | 4 +++- menu/menu_displaylist.c | 16 ++++------------ 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/cheats.c b/cheats.c index 21acb3395b..2aefb3386a 100644 --- a/cheats.c +++ b/cheats.c @@ -382,8 +382,10 @@ const char *cheat_manager_get_code(unsigned i) return handle->cheats[i].code; } -const char *cheat_manager_get_desc(cheat_manager_t *handle, unsigned i) +const char *cheat_manager_get_desc(unsigned i) { + global_t *global = global_get_ptr(); + cheat_manager_t *handle = global->cheat; if (!handle) return NULL; return handle->cheats[i].desc; @@ -423,3 +425,20 @@ void cheat_manager_state_free(void) global->cheat = NULL; } + +bool cheat_manager_alloc_if_empty(void) +{ + global_t *global = global_get_ptr(); + cheat_manager_t *cheat = global->cheat; + + if (!cheat) + { + global->cheat = cheat_manager_new(0); + + if (!global->cheat) + return false; + cheat = global->cheat; + } + + return true; +} diff --git a/cheats.h b/cheats.h index 72f480d6cc..a228217dd6 100644 --- a/cheats.h +++ b/cheats.h @@ -61,7 +61,7 @@ void cheat_manager_toggle_index(unsigned i); unsigned cheat_manager_get_buf_size(void); -const char *cheat_manager_get_desc(cheat_manager_t *handle, unsigned i); +const char *cheat_manager_get_desc(unsigned i); const char *cheat_manager_get_code(unsigned i); @@ -74,6 +74,8 @@ void cheat_manager_state_checks( void cheat_manager_state_free(void); +bool cheat_manager_alloc_if_empty(void); + #ifdef __cplusplus } #endif diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 1d20a464b8..7ee9707317 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -1971,17 +1971,9 @@ static int menu_displaylist_parse_options(menu_displaylist_info_t *info) static int menu_displaylist_parse_options_cheats(menu_displaylist_info_t *info) { unsigned i; - global_t *global = global_get_ptr(); - cheat_manager_t *cheat = global ? global->cheat : NULL; - if (!cheat) - { - global->cheat = cheat_manager_new(0); - - if (!global->cheat) - return -1; - cheat = global->cheat; - } + if (!cheat_manager_alloc_if_empty()) + return -1; menu_entries_push(info->list, menu_hash_to_str(MENU_LABEL_VALUE_CHEAT_FILE_LOAD), @@ -2005,8 +1997,8 @@ static int menu_displaylist_parse_options_cheats(menu_displaylist_info_t *info) char cheat_label[64] = {0}; snprintf(cheat_label, sizeof(cheat_label), "%s #%u: ", menu_hash_to_str(MENU_VALUE_CHEAT), i); - if (cheat_manager_get_desc(cheat, i)) - strlcat(cheat_label, cheat_manager_get_desc(cheat, i), sizeof(cheat_label)); + if (cheat_manager_get_desc(i)) + strlcat(cheat_label, cheat_manager_get_desc(i), sizeof(cheat_label)); menu_entries_push(info->list, cheat_label, "", MENU_SETTINGS_CHEAT_BEGIN + i, 0, 0); }