From f778bee8567cddedbfcd25366930758185df507f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 06:38:02 +0200 Subject: [PATCH 01/16] Add input_menu_keys_pressed to master --- input/input_driver.c | 80 ++++++++++++++++++++++++++++++++++++++++++++ input/input_driver.h | 2 ++ runloop.c | 2 +- 3 files changed, 83 insertions(+), 1 deletion(-) diff --git a/input/input_driver.c b/input/input_driver.c index 327754737f..e237540727 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -663,6 +663,86 @@ uint64_t input_keys_pressed(void) return ret; } +/** + * input_menu_keys_pressed: + * + * Grab an input sample for this frame. We exclude + * keyboard input here. + * + * TODO: In case RARCH_BIND_LIST_END starts exceeding 64, + * and you need a bitmask of more than 64 entries, reimplement + * it to use something like rarch_bits_t. + * + * Returns: Input sample containg a mask of all pressed keys. + */ +uint64_t input_menu_keys_pressed(void) +{ + unsigned i; + uint64_t ret = 0; + settings_t *settings = config_get_ptr(); + + if (!current_input || !current_input_data) + return ret; + + if (current_input->key_pressed && + check_input_driver_block_hotkey( + current_input->key_pressed(current_input_data, RARCH_ENABLE_HOTKEY))) + input_driver_block_libretro_input = true; + else + input_driver_block_libretro_input = false; + + for (i = 0; i < RARCH_BIND_LIST_END; i++) + { + bool state = false; +#if 1 + if (((!input_driver_block_libretro_input && ((i < RARCH_FIRST_META_KEY))) + || !input_driver_block_hotkey) && current_input->key_pressed) + state = current_input->key_pressed(current_input_data, i); + + if (i >= RARCH_FIRST_META_KEY) + state |= current_input->meta_key_pressed(current_input_data, i); +#else + if (((((!input_driver_block_libretro_input && ((i < RARCH_FIRST_META_KEY))) + || !input_driver_block_hotkey) && current_input->key_pressed)) + && settings->input.binds[0][i].valid) + { + state = input_joypad_pressed(input_driver_get_joypad_driver(), + 0, settings->input.binds[0], i); + } + + if (i >= RARCH_FIRST_META_KEY && settings->input.binds[0][i].valid) + state |= input_joypad_pressed(input_driver_get_joypad_driver(), + 0, settings->input.binds[0], i); +#endif + +#ifdef HAVE_OVERLAY + state |= input_overlay_key_pressed(i); +#endif + +#ifdef HAVE_COMMAND + if (input_driver_command) + { + command_handle_t handle; + + handle.handle = input_driver_command; + handle.id = i; + + state |= command_get(&handle); + } +#endif + +#ifdef HAVE_NETWORKGAMEPAD + if (input_driver_remote) + state |= input_remote_key_pressed(i, 0); +#endif + + if (state) + ret |= (UINT64_C(1) << i); + } + + return ret; +} + void *input_driver_get_data(void) { return current_input_data; diff --git a/input/input_driver.h b/input/input_driver.h index 657be73c9b..e51a296181 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -224,6 +224,8 @@ int16_t input_state(unsigned port, unsigned device, uint64_t input_keys_pressed(void); +uint64_t input_menu_keys_pressed(void); + void *input_driver_get_data(void); const input_driver_t *input_get_ptr(void); diff --git a/runloop.c b/runloop.c index ebfcfe7781..491b23c66f 100644 --- a/runloop.c +++ b/runloop.c @@ -1126,7 +1126,7 @@ int runloop_iterate(unsigned *sleep_ms) static retro_time_t frame_limit_minimum_time = 0.0; static retro_time_t frame_limit_last_time = 0.0; settings_t *settings = config_get_ptr(); - uint64_t current_input = input_keys_pressed(); + uint64_t current_input = menu_driver_ctl(RARCH_MENU_CTL_IS_ALIVE, NULL) ? input_menu_keys_pressed() : input_keys_pressed(); uint64_t old_input = last_input; last_input = current_input; From 5ac99055405b33eacd70903ae0cee206afaf832d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 06:47:31 +0200 Subject: [PATCH 02/16] Simplify code --- input/input_driver.c | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/input/input_driver.c b/input/input_driver.c index e237540727..3e6fdd2b13 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -694,26 +694,24 @@ uint64_t input_menu_keys_pressed(void) for (i = 0; i < RARCH_BIND_LIST_END; i++) { bool state = false; -#if 1 - if (((!input_driver_block_libretro_input && ((i < RARCH_FIRST_META_KEY))) + if ( + (((!input_driver_block_libretro_input && ((i < RARCH_FIRST_META_KEY))) || !input_driver_block_hotkey) && current_input->key_pressed) +#if 0 + && settings->input.binds[0][i].valid +#endif + ) + { +#if 0 + state = input_joypad_pressed(input_driver_get_joypad_driver(), + 0, settings->input.binds[0], i); +#else state = current_input->key_pressed(current_input_data, i); +#endif + } if (i >= RARCH_FIRST_META_KEY) state |= current_input->meta_key_pressed(current_input_data, i); -#else - if (((((!input_driver_block_libretro_input && ((i < RARCH_FIRST_META_KEY))) - || !input_driver_block_hotkey) && current_input->key_pressed)) - && settings->input.binds[0][i].valid) - { - state = input_joypad_pressed(input_driver_get_joypad_driver(), - 0, settings->input.binds[0], i); - } - - if (i >= RARCH_FIRST_META_KEY && settings->input.binds[0][i].valid) - state |= input_joypad_pressed(input_driver_get_joypad_driver(), - 0, settings->input.binds[0], i); -#endif #ifdef HAVE_OVERLAY state |= input_overlay_key_pressed(i); From 65685c3a9dfcfcc8222afa36077daa332c854e4d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 06:55:08 +0200 Subject: [PATCH 03/16] Update input_menu_keys_pressed --- input/input_driver.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/input/input_driver.c b/input/input_driver.c index 3e6fdd2b13..5b1b87bad4 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -702,9 +702,19 @@ uint64_t input_menu_keys_pressed(void) #endif ) { + int port; + int port_max = 1; #if 0 - state = input_joypad_pressed(input_driver_get_joypad_driver(), - 0, settings->input.binds[0], i); + if (settings->input.all_users_control_menu) + port_max = settings->input.max_users; + + for (port = 0; port < port_max; port++) + { + state = input_joypad_pressed(input_driver_get_joypad_driver(), + port, settings->input.binds[0], i); + if (state) + break; + } #else state = current_input->key_pressed(current_input_data, i); #endif From d246d320c7541e35a2bee005ce465c17d8a59a8d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 07:00:13 +0200 Subject: [PATCH 04/16] Get rid of messy 'all_users_control_menu' hack - will be dealt with better once menu_input branch has been merged --- input/drivers/android_input.c | 16 +++------------- input/drivers/cocoa_input.c | 33 ++++++-------------------------- input/drivers/ctr_input.c | 16 +++------------- input/drivers/dinput.c | 13 ++----------- input/drivers/gx_input.c | 16 +++------------- input/drivers/linuxraw_input.c | 16 +++------------- input/drivers/ps3_input.c | 13 ++----------- input/drivers/psp_input.c | 13 ++----------- input/drivers/qnx_input.c | 13 ++----------- input/drivers/sdl_input.c | 20 +++++-------------- input/drivers/udev_input.c | 16 +++------------- input/drivers/wiiu_input.c | 16 +++------------- input/drivers/x11_input.c | 13 ++----------- input/drivers/xdk_xinput_input.c | 16 +++------------- 14 files changed, 42 insertions(+), 188 deletions(-) diff --git a/input/drivers/android_input.c b/input/drivers/android_input.c index ccd96d956d..6f504a8434 100644 --- a/input/drivers/android_input.c +++ b/input/drivers/android_input.c @@ -1162,24 +1162,14 @@ static bool android_input_key_pressed(void *data, int key) { android_input_t *android = (android_input_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; if(settings->input.binds[0][key].valid && android_keyboard_port_input_pressed(settings->input.binds[0],key)) return true; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(android->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(android->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(android->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/cocoa_input.c b/input/drivers/cocoa_input.c index 12cc18b739..d20ea096ac 100644 --- a/input/drivers/cocoa_input.c +++ b/input/drivers/cocoa_input.c @@ -315,41 +315,20 @@ static bool cocoa_input_key_pressed(void *data, int key) { cocoa_input_data_t *apple = (cocoa_input_data_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; if (settings->input.binds[0][key].valid && apple_input_is_pressed(0, settings->input.binds[0], key)) return true; - if (settings->input.all_users_control_menu) + if (settings->input.binds[0][key].valid) { - for (port = 0; port < MAX_USERS; port++) - { - if (settings->input.binds[0][key].valid) - { - if (input_joypad_pressed(apple->joypad, - port, settings->input.binds[0], key)) - return true; + if (input_joypad_pressed(apple->joypad, + 0, settings->input.binds[0], key)) + return true; #ifdef HAVE_MFI - if (input_joypad_pressed(apple->sec_joypad, port, settings->input.binds[0], key)) - return true; + if (input_joypad_pressed(apple->sec_joypad, 0, settings->input.binds[0], key)) + return true; #endif - } - } - } - else - { - if (settings->input.binds[0][key].valid) - { - if (input_joypad_pressed(apple->joypad, - 0, settings->input.binds[0], key)) - return true; - -#ifdef HAVE_MFI - if (input_joypad_pressed(apple->sec_joypad, 0, settings->input.binds[0], key)) - return true; -#endif - } } return false; diff --git a/input/drivers/ctr_input.c b/input/drivers/ctr_input.c index 9f5619c407..5dbea29058 100644 --- a/input/drivers/ctr_input.c +++ b/input/drivers/ctr_input.c @@ -95,21 +95,11 @@ static bool ctr_input_key_pressed(void *data, int key) { settings_t *settings = config_get_ptr(); ctr_input_t *ctr = (ctr_input_t*)data; - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(ctr->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(ctr->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(ctr->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/dinput.c b/input/drivers/dinput.c index 88d9922795..58c6625e04 100644 --- a/input/drivers/dinput.c +++ b/input/drivers/dinput.c @@ -314,19 +314,10 @@ static int16_t dinput_pressed_analog(struct dinput_input *di, static bool dinput_key_pressed(void *data, int key) { settings_t *settings = config_get_ptr(); - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (dinput_is_pressed((struct dinput_input*)data, - settings->input.binds[0], port, key)) - return true; - } - else - if (dinput_is_pressed((struct dinput_input*)data, + if (dinput_is_pressed((struct dinput_input*)data, settings->input.binds[0], 0, key)) - return true; + return true; return false; } diff --git a/input/drivers/gx_input.c b/input/drivers/gx_input.c index 021f09873d..51a9c3deb5 100644 --- a/input/drivers/gx_input.c +++ b/input/drivers/gx_input.c @@ -100,21 +100,11 @@ static bool gx_input_key_pressed(void *data, int key) { settings_t *settings = config_get_ptr(); gx_input_t *gx = (gx_input_t*)data; - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(gx->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(gx->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(gx->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/linuxraw_input.c b/input/drivers/linuxraw_input.c index 99389fa1b4..77d39a725b 100644 --- a/input/drivers/linuxraw_input.c +++ b/input/drivers/linuxraw_input.c @@ -111,24 +111,14 @@ static bool linuxraw_input_key_pressed(void *data, int key) { linuxraw_input_t *linuxraw = (linuxraw_input_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; if (linuxraw_is_pressed(linuxraw, settings->input.binds[0], key)) return true; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(linuxraw->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(linuxraw->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(linuxraw->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/ps3_input.c b/input/drivers/ps3_input.c index 666933b1d0..add2992546 100644 --- a/input/drivers/ps3_input.c +++ b/input/drivers/ps3_input.c @@ -186,19 +186,10 @@ static bool ps3_input_key_pressed(void *data, int key) { ps3_input_t *ps3 = (ps3_input_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (input_joypad_pressed(ps3->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (input_joypad_pressed(ps3->joypad, + if (input_joypad_pressed(ps3->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/psp_input.c b/input/drivers/psp_input.c index c774e088fb..32df4b9345 100644 --- a/input/drivers/psp_input.c +++ b/input/drivers/psp_input.c @@ -113,19 +113,10 @@ static bool psp_input_key_pressed(void *data, int key) { settings_t *settings = config_get_ptr(); psp_input_t *psp = (psp_input_t*)data; - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (input_joypad_pressed(psp->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (input_joypad_pressed(psp->joypad, + if (input_joypad_pressed(psp->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/qnx_input.c b/input/drivers/qnx_input.c index dbd4e7709d..0f2bf1888b 100644 --- a/input/drivers/qnx_input.c +++ b/input/drivers/qnx_input.c @@ -798,19 +798,10 @@ static bool qnx_input_key_pressed(void *data, int key) { qnx_input_t *qnx = (qnx_input_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (input_joypad_pressed(qnx->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (input_joypad_pressed(qnx->joypad, + if (input_joypad_pressed(qnx->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/sdl_input.c b/input/drivers/sdl_input.c index 88c3d12f66..968f0e69f8 100644 --- a/input/drivers/sdl_input.c +++ b/input/drivers/sdl_input.c @@ -110,27 +110,17 @@ static bool sdl_input_key_pressed(void *data, int key) { if (key >= 0 && key < RARCH_BIND_LIST_END) { - sdl_input_t *sdl = (sdl_input_t*)data; - settings_t *settings = config_get_ptr(); - int port = 0; + sdl_input_t *sdl = (sdl_input_t*)data; + settings_t *settings = config_get_ptr(); const struct retro_keybind *binds = settings->input.binds[0]; if (sdl_is_pressed(sdl, 0, binds, key)) return true; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(sdl->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(sdl->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(sdl->joypad, 0, settings->input.binds[0], key)) - return true; + return true; } return false; diff --git a/input/drivers/udev_input.c b/input/drivers/udev_input.c index 59168a6b9d..f3a077e141 100644 --- a/input/drivers/udev_input.c +++ b/input/drivers/udev_input.c @@ -552,25 +552,15 @@ static bool udev_input_key_pressed(void *data, int key) { udev_input_t *udev = (udev_input_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; if (settings->input.binds[0][key].valid && udev_input_is_pressed(settings->input.binds[0], key)) return true; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(udev->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(udev->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(udev->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/wiiu_input.c b/input/drivers/wiiu_input.c index 17fb270c3a..611b9ba12f 100644 --- a/input/drivers/wiiu_input.c +++ b/input/drivers/wiiu_input.c @@ -98,21 +98,11 @@ static bool wiiu_input_key_pressed(void *data, int key) { settings_t *settings = config_get_ptr(); wiiu_input_t *wiiu = (wiiu_input_t*)data; - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(wiiu->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(wiiu->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(wiiu->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/x11_input.c b/input/drivers/x11_input.c index 48acc1a681..ba437436b8 100644 --- a/input/drivers/x11_input.c +++ b/input/drivers/x11_input.c @@ -123,22 +123,13 @@ static bool x_input_key_pressed(void *data, int key) { x11_input_t *x11 = (x11_input_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; if (settings->input.binds[0][key].valid && x_is_pressed(x11, settings->input.binds[0], key)) return true; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (input_joypad_pressed(x11->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (input_joypad_pressed(x11->joypad, + if (input_joypad_pressed(x11->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } diff --git a/input/drivers/xdk_xinput_input.c b/input/drivers/xdk_xinput_input.c index e7c5d51469..cd6f8daceb 100644 --- a/input/drivers/xdk_xinput_input.c +++ b/input/drivers/xdk_xinput_input.c @@ -100,21 +100,11 @@ static bool xdk_input_key_pressed(void *data, int key) { xdk_input_t *xdk = (xdk_input_t*)data; settings_t *settings = config_get_ptr(); - int port = 0; - if (settings->input.all_users_control_menu) - { - for (port = 0; port < MAX_USERS; port++) - if (settings->input.binds[0][key].valid && - input_joypad_pressed(xdk->joypad, - port, settings->input.binds[0], key)) - return true; - } - else - if (settings->input.binds[0][key].valid && - input_joypad_pressed(xdk->joypad, + if (settings->input.binds[0][key].valid && + input_joypad_pressed(xdk->joypad, 0, settings->input.binds[0], key)) - return true; + return true; return false; } From 8d6be4b70027f99e7cae4489fb790a3828f95cff Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:13:36 +0200 Subject: [PATCH 05/16] Reduce size of some messages (was PATH_MAX_LENGTH by default, which can default to 4096) --- input/input_autodetect.c | 6 +++--- menu/drivers/materialui.c | 22 +++++++++++----------- menu/drivers/xmb.c | 12 ++++++------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 4585226265..81dc090426 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -117,9 +117,9 @@ static int input_try_autoconfigure_joypad_from_conf(config_file_t *conf, static void input_autoconfigure_joypad_add(config_file_t *conf, autoconfig_params_t *params) { - char msg[PATH_MAX_LENGTH]; - char display_name[PATH_MAX_LENGTH]; - char device_type[PATH_MAX_LENGTH]; + char msg[128]; + char display_name[128]; + char device_type[128]; bool block_osd_spam = false; static bool remote_is_bound = false; settings_t *settings = config_get_ptr(); diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index e985a9a25f..af25eae791 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -88,7 +88,7 @@ typedef struct mui_handle unsigned icon_size; unsigned margin; unsigned glyph_width; - char box_message[PATH_MAX_LENGTH]; + char box_message[255]; struct { @@ -552,8 +552,8 @@ static void mui_render_label_value(mui_handle_t *mui, menu_animation_ctx_ticker_t ticker; - char label_str[PATH_MAX_LENGTH]; - char value_str[PATH_MAX_LENGTH]; + char label_str[255]; + char value_str[255]; bool switch_is_on = true; int value_len = utf8len(value); int ticker_limit = 0; @@ -684,8 +684,8 @@ static void mui_render_menu_list(mui_handle_t *mui, { int y; size_t selection; - char rich_label[PATH_MAX_LENGTH]; - char entry_value[PATH_MAX_LENGTH]; + char rich_label[255]; + char entry_value[255]; bool entry_selected = false; rich_label[0] = entry_value[0] = '\0'; @@ -843,10 +843,10 @@ static void mui_frame(void *data) menu_display_ctx_clearcolor_t clearcolor; menu_animation_ctx_ticker_t ticker; menu_display_ctx_draw_t draw; - char msg[256]; - char title[256]; - char title_buf[256]; - char title_msg[256]; + char msg[255]; + char title[255]; + char title_buf[255]; + char title_msg[255]; #ifdef VITA uint32_t black_opaque_54 = 0x8a000000; @@ -1209,8 +1209,8 @@ static void mui_frame(void *data) if (mui_get_core_title(title_msg, sizeof(title_msg)) == 0) { int ticker_limit, value_len; - char title_buf_msg_tmp[256]; - char title_buf_msg[256]; + char title_buf_msg_tmp[255]; + char title_buf_msg[255]; size_t usable_width = width - (mui->margin * 2); title_buf_msg_tmp[0] = title_buf_msg[0] = '\0'; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index f8a5ddb71b..9d281b5d80 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -157,7 +157,7 @@ typedef struct xmb_handle size_t selection_ptr_old; int depth; int old_depth; - char box_message[PATH_MAX_LENGTH]; + char box_message[255]; float x; float alpha; uintptr_t thumbnail; @@ -201,7 +201,7 @@ typedef struct xmb_handle float shadow_offset; - char title_name[256]; + char title_name[255]; struct { @@ -2321,9 +2321,9 @@ static void xmb_frame(void *data) unsigned i, width, height; float item_color[16], coord_black[16], coord_white[16]; menu_display_ctx_rotate_draw_t rotate_draw; - char msg[PATH_MAX_LENGTH]; - char title_msg[256]; - char title_truncated[256]; + char msg[255]; + char title_msg[255]; + char title_truncated[255]; bool render_background = false; file_list_t *selection_buf = NULL; file_list_t *menu_stack = NULL; @@ -2425,7 +2425,7 @@ static void xmb_frame(void *data) if (settings->menu.timedate_enable) { menu_display_ctx_datetime_t datetime; - char timedate[256]; + char timedate[255]; timedate[0] = '\0'; From b1b2579fdeb740ce82680bc79fa07e4a36a49a1a Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:17:41 +0200 Subject: [PATCH 06/16] Start reducing size of some char variables --- input/drivers_joypad/udev_joypad.c | 4 ++-- menu/menu_displaylist.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/input/drivers_joypad/udev_joypad.c b/input/drivers_joypad/udev_joypad.c index e1556ccf17..bac6829b8d 100644 --- a/input/drivers_joypad/udev_joypad.c +++ b/input/drivers_joypad/udev_joypad.c @@ -76,7 +76,7 @@ struct udev_joypad uint16_t strength[2]; uint16_t configured_strength[2]; - char ident[PATH_MAX_LENGTH]; + char ident[255]; char *path; int32_t vid; int32_t pid; @@ -362,7 +362,7 @@ static void udev_check_device(struct udev_device *dev, const char *path, bool ho default: if (hotplugged) { - char msg[PATH_MAX_LENGTH]; + char msg[255]; msg[0] = '\0'; diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index d7edc11af1..c6c3f16437 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -153,7 +153,7 @@ static void print_buf_lines(file_list_t *list, char *buf, if (settings) { - char display_name[PATH_MAX_LENGTH]; + char display_name[255]; char core_path[PATH_MAX_LENGTH]; char *last = NULL; @@ -437,7 +437,7 @@ static int menu_displaylist_parse_network_info(menu_displaylist_info_t *info) for (k = 0; k < list->size; k++) { - char tmp[PATH_MAX_LENGTH]; + char tmp[255]; tmp[0] = '\0'; From 60d313bf6a6702523664fe92b76b9d96644f96ea Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:21:03 +0200 Subject: [PATCH 07/16] Reduce size of more char variables --- core.h | 2 +- input/input_autodetect.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core.h b/core.h index 0543629492..7afbaa0fa3 100644 --- a/core.h +++ b/core.h @@ -51,7 +51,7 @@ typedef struct rarch_system_info unsigned performance_level; const char *input_desc_btn[MAX_USERS][RARCH_FIRST_META_KEY]; - char valid_extensions[PATH_MAX_LENGTH]; + char valid_extensions[255]; struct retro_disk_control_callback disk_control_cb; struct retro_location_callback location_cb; diff --git a/input/input_autodetect.h b/input/input_autodetect.h index a1e086aa5c..542e525219 100644 --- a/input/input_autodetect.h +++ b/input/input_autodetect.h @@ -24,9 +24,9 @@ typedef struct autoconfig_params { - char name[PATH_MAX_LENGTH]; - char driver[PATH_MAX_LENGTH]; - char display_name[PATH_MAX_LENGTH]; + char name[255]; + char driver[255]; + char display_name[255]; unsigned idx; int32_t vid; int32_t pid; From c1b59df7aeeea3c4bf1597e63fc779fa421be413 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:32:07 +0200 Subject: [PATCH 08/16] Reduce size of char variables --- configuration.h | 6 +++--- database_info.h | 3 +-- input/input_autodetect.c | 4 ++-- libretro-common/lists/string_list.c | 3 +-- menu/cbs/menu_cbs_get_value.c | 6 ++++-- menu/cbs/menu_cbs_title.c | 8 ++++---- menu/widgets/menu_entry.h | 10 +++++----- 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/configuration.h b/configuration.h index 5e05787409..a0f64b2805 100644 --- a/configuration.h +++ b/configuration.h @@ -210,7 +210,7 @@ typedef struct settings struct { char driver[32]; - char device[PATH_MAX_LENGTH]; + char device[255]; bool allow; unsigned width; unsigned height; @@ -234,7 +234,7 @@ typedef struct settings { char driver[32]; char resampler[32]; - char device[PATH_MAX_LENGTH]; + char device[255]; bool enable; bool mute_enable; unsigned out_rate; @@ -400,7 +400,7 @@ typedef struct settings #ifdef HAVE_NETWORKING struct { - char server[PATH_MAX_LENGTH]; + char server[255]; unsigned port; unsigned sync_frames; unsigned check_frames; diff --git a/database_info.h b/database_info.h index 7a5262c699..f6c63fe79f 100644 --- a/database_info.h +++ b/database_info.h @@ -22,7 +22,6 @@ #include #include -#include #include RETRO_BEGIN_DECLS @@ -107,7 +106,7 @@ typedef struct database_state_handle uint32_t crc; uint32_t archive_crc; uint8_t *buf; - char archive_name[PATH_MAX_LENGTH]; + char archive_name[255]; char serial[4096]; } database_state_handle_t; diff --git a/input/input_autodetect.c b/input/input_autodetect.c index 81dc090426..85a3bfa6b1 100644 --- a/input/input_autodetect.c +++ b/input/input_autodetect.c @@ -296,7 +296,7 @@ static bool input_config_autoconfigure_joypad_init(autoconfig_params_t *params) bool input_config_autoconfigure_joypad(autoconfig_params_t *params) { - char msg[PATH_MAX_LENGTH]; + char msg[255]; msg[0] = '\0'; @@ -337,7 +337,7 @@ const struct retro_keybind *input_get_auto_bind(unsigned port, unsigned id) void input_config_autoconfigure_disconnect(unsigned i, const char *ident) { - char msg[PATH_MAX_LENGTH]; + char msg[255]; msg[0] = '\0'; diff --git a/libretro-common/lists/string_list.c b/libretro-common/lists/string_list.c index 9eedc7ad37..93368c4201 100644 --- a/libretro-common/lists/string_list.c +++ b/libretro-common/lists/string_list.c @@ -26,7 +26,6 @@ #include #include -#include #include #include @@ -290,7 +289,7 @@ bool string_list_find_elem_prefix(const struct string_list *list, const char *prefix, const char *elem) { size_t i; - char prefixed[PATH_MAX_LENGTH]; + char prefixed[255]; if (!list) return false; diff --git a/menu/cbs/menu_cbs_get_value.c b/menu/cbs/menu_cbs_get_value.c index b6c79ee92a..9daf1d1cac 100644 --- a/menu/cbs/menu_cbs_get_value.c +++ b/menu/cbs/menu_cbs_get_value.c @@ -447,7 +447,7 @@ static void menu_action_setting_disp_set_label_input_desc( const char *path, char *s2, size_t len2) { - char descriptor[PATH_MAX_LENGTH]; + char descriptor[255]; const struct retro_keybind *auto_bind = NULL; const struct retro_keybind *keybind = NULL; settings_t *settings = config_get_ptr(); @@ -461,6 +461,8 @@ static void menu_action_setting_disp_set_label_input_desc( if (!settings) return; + + descriptor[0] = '\0'; remap_id = settings->input.remap_ids [inp_desc_user][inp_desc_button_index_offset]; @@ -1405,7 +1407,7 @@ static void menu_action_setting_disp_set_label_playlist_associations(file_list_t const char *path, char *s2, size_t len2) { - char playlist_name_with_ext[PATH_MAX_LENGTH]; + char playlist_name_with_ext[255]; bool found_matching_core_association = false; settings_t *settings = config_get_ptr(); struct string_list *str_list = string_split(settings->playlist_names, ";"); diff --git a/menu/cbs/menu_cbs_title.c b/menu/cbs/menu_cbs_title.c index 6cd8dd1d13..d16882e691 100644 --- a/menu/cbs/menu_cbs_title.c +++ b/menu/cbs/menu_cbs_title.c @@ -37,7 +37,7 @@ static void replace_chars(char *str, char c1, char c2) static void sanitize_to_string(char *s, const char *label, size_t len) { - char new_label[PATH_MAX_LENGTH]; + char new_label[255]; new_label[0] = '\0'; @@ -690,7 +690,7 @@ static int action_get_title_generic(char *s, size_t len, const char *path, if (list_path) { - char elem0_path[PATH_MAX_LENGTH]; + char elem0_path[255]; elem0_path[0] = '\0'; @@ -839,8 +839,8 @@ static int action_get_title_group_settings(const char *path, const char *label, strlcpy(s, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_HORIZONTAL_MENU), len); else { - char elem0[PATH_MAX_LENGTH]; - char elem1[PATH_MAX_LENGTH]; + char elem0[255]; + char elem1[255]; struct string_list *list_label = string_split(label, "|"); elem0[0] = elem1[0] = '\0'; diff --git a/menu/widgets/menu_entry.h b/menu/widgets/menu_entry.h index e2af13e9ac..d37fa7e457 100644 --- a/menu/widgets/menu_entry.h +++ b/menu/widgets/menu_entry.h @@ -45,11 +45,11 @@ enum menu_entry_type typedef struct menu_entry { - char path[PATH_MAX_LENGTH]; - char label[PATH_MAX_LENGTH]; - char sublabel[PATH_MAX_LENGTH]; - char rich_label[PATH_MAX_LENGTH]; - char value[PATH_MAX_LENGTH]; + char path[255]; + char label[255]; + char sublabel[255]; + char rich_label[255]; + char value[255]; size_t entry_idx; enum msg_hash_enums enum_idx; unsigned idx; From f0175935017847befae9cacb79825f1e21933199 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:44:20 +0200 Subject: [PATCH 09/16] Reduce size of some char variables and get rid of some implicit memsets --- configuration.c | 14 ++++++++++---- list_special.c | 4 ++-- playlist.c | 2 +- retroarch.c | 4 ++-- runloop.c | 2 +- 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/configuration.c b/configuration.c index b1bdd94b3b..a1eaecda86 100644 --- a/configuration.c +++ b/configuration.c @@ -1283,7 +1283,9 @@ static void config_set_defaults(void) if (!string_is_empty(g_defaults.dir.osk_overlay)) { - char temp_path[PATH_MAX_LENGTH] = {0}; + char temp_path[PATH_MAX_LENGTH]; + + temp_path[0] = '\0'; fill_pathname_expand_special(temp_path, g_defaults.dir.osk_overlay, sizeof(temp_path)); @@ -1299,7 +1301,9 @@ static void config_set_defaults(void) } else { - char temp_path[PATH_MAX_LENGTH] = {0}; + char temp_path[PATH_MAX_LENGTH]; + + temp_path[0] = '\0'; strlcpy(temp_path, settings->directory.overlay, @@ -1708,10 +1712,10 @@ static bool config_load_file(const char *path, bool set_defaults, settings_t *settings) { unsigned i; + char tmp_str[PATH_MAX_LENGTH]; bool ret = false; bool tmp_bool = false; char *save = NULL; - char tmp_str[PATH_MAX_LENGTH]; unsigned msg_color = 0; config_file_t *conf = NULL; struct config_int_setting *int_settings = NULL; @@ -2265,7 +2269,9 @@ bool config_load_override(void) /* If a game override exists, add it's location to append_config_path */ if (new_conf) { - char temp_path[PATH_MAX_LENGTH] = {0}; + char temp_path[PATH_MAX_LENGTH]; + + temp_path[0] = '\0'; config_file_free(new_conf); diff --git a/list_special.c b/list_special.c index 97a0268c9a..235f77ff96 100644 --- a/list_special.c +++ b/list_special.c @@ -55,8 +55,8 @@ struct string_list *dir_list_new_special(const char *input_dir, enum dir_list_type type, const char *filter) { - char ext_shaders[PATH_MAX_LENGTH]; - char ext_name[PATH_MAX_LENGTH]; + char ext_shaders[255]; + char ext_name[255]; const char *dir = NULL; const char *exts = NULL; bool include_dirs = false; diff --git a/playlist.c b/playlist.c index a3f2c80efe..530296a7da 100644 --- a/playlist.c +++ b/playlist.c @@ -247,7 +247,7 @@ bool playlist_push(playlist_t *playlist, { if (string_is_empty(core_name) && !string_is_empty(core_path)) { - static char base_path[PATH_MAX_LENGTH] = {0}; + static char base_path[255] = {0}; fill_pathname_base_noext(base_path, core_path, sizeof(base_path)); core_name = base_path; RARCH_LOG("core_name is now: %s\n", core_name); diff --git a/retroarch.c b/retroarch.c index 2a4a048b46..4419814b05 100644 --- a/retroarch.c +++ b/retroarch.c @@ -228,7 +228,7 @@ static void retroarch_print_features(void) static void retroarch_print_version(void) { - char str[PATH_MAX_LENGTH]; + char str[255]; str[0] = '\0'; @@ -1026,7 +1026,7 @@ bool retroarch_main_init(int argc, char *argv[]) if (verbosity_is_enabled()) { - char str[PATH_MAX_LENGTH]; + char str[255]; str[0] = '\0'; diff --git a/runloop.c b/runloop.c index 491b23c66f..67fa0d2fb0 100644 --- a/runloop.c +++ b/runloop.c @@ -237,7 +237,7 @@ static bool runloop_cmd_get_state_menu_toggle_button_combo( **/ static bool rarch_game_specific_options(char **output) { - char game_path[PATH_MAX_LENGTH]; + char game_path[255]; game_path[0] ='\0'; From 50ba48924d08345bae9c7aeb480fd4e0d4d33c66 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:49:21 +0200 Subject: [PATCH 10/16] Reduce more PATH_MAX_LENGTH usage --- menu/drivers/xmb.c | 8 ++++---- menu/menu_setting.c | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 9d281b5d80..b294e48ab3 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1912,10 +1912,10 @@ static void xmb_draw_items(xmb_handle_t *xmb, float icon_x, icon_y, label_offset; menu_animation_ctx_ticker_t ticker; char ticker_str[PATH_MAX_LENGTH]; - char name[PATH_MAX_LENGTH]; - char value[PATH_MAX_LENGTH]; - char entry_value[PATH_MAX_LENGTH]; - char entry_sublabel[PATH_MAX_LENGTH]; + char name[255]; + char value[255]; + char entry_value[255]; + char entry_sublabel[255]; menu_entry_t entry; const float half_size = xmb->icon.size / 2.0f; uintptr_t texture_switch = 0; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index aa6af94ad6..0aea94431d 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -1807,7 +1807,7 @@ static bool setting_append_list_input_player_options( * 2 is the length of '99'; we don't need more users than that. */ static char buffer[MAX_USERS][13+2+1]; - static char group_lbl[MAX_USERS][PATH_MAX_LENGTH]; + static char group_lbl[MAX_USERS][255]; unsigned i; rarch_setting_group_info_t group_info = {0}; rarch_setting_group_info_t subgroup_info = {0}; @@ -1993,8 +1993,8 @@ static bool setting_append_list_input_player_options( for (i = 0; i < RARCH_BIND_LIST_END; i ++) { - char label[PATH_MAX_LENGTH]; - char name[PATH_MAX_LENGTH]; + char label[255]; + char name[255]; if (input_config_bind_map_get_meta(i)) continue; @@ -2125,7 +2125,7 @@ static bool setting_append_list( if (frontend_driver_has_fork()) #endif { - char ext_name[PATH_MAX_LENGTH]; + char ext_name[255]; ext_name[0] = '\0'; @@ -4087,8 +4087,8 @@ static bool setting_append_list( for (user = 0; user < MAX_USERS; user++) { - static char binds_list[MAX_USERS][PATH_MAX_LENGTH]; - static char binds_label[MAX_USERS][PATH_MAX_LENGTH]; + static char binds_list[MAX_USERS][255]; + static char binds_label[MAX_USERS][255]; unsigned user_value = user + 1; snprintf(binds_list[user], sizeof(binds_list[user]), "%d_input_binds_list", user_value); From 611784cbd8c37f22c6327ff2c478215c4eee03ae Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:50:46 +0200 Subject: [PATCH 11/16] (rgui) Reduce char variables --- menu/drivers/rgui.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index e032af9d62..226bc5fc1a 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -389,10 +389,10 @@ static void rgui_render(void *data) size_t i, end, fb_pitch, old_start; unsigned fb_width, fb_height; int bottom; - char title[256]; - char title_buf[256]; + char title[255]; + char title_buf[255]; char title_msg[64]; - char msg[PATH_MAX_LENGTH]; + char msg[255]; bool msg_force = false; uint64_t *frame_count = NULL; settings_t *settings = config_get_ptr(); @@ -536,7 +536,7 @@ static void rgui_render(void *data) if (settings->menu.timedate_enable) { menu_display_ctx_datetime_t datetime; - char timedate[PATH_MAX_LENGTH]; + char timedate[255]; timedate[0] = '\0'; @@ -561,11 +561,11 @@ static void rgui_render(void *data) { menu_animation_ctx_ticker_t ticker; size_t selection; - char entry_path[PATH_MAX_LENGTH]; - char entry_value[PATH_MAX_LENGTH]; - char message[PATH_MAX_LENGTH]; - char entry_title_buf[PATH_MAX_LENGTH]; - char type_str_buf[PATH_MAX_LENGTH]; + char entry_path[255]; + char entry_value[255]; + char message[255]; + char entry_title_buf[255]; + char type_str_buf[255]; unsigned entry_spacing = menu_entry_get_spacing(i); bool entry_selected = menu_entry_is_currently_selected(i); From d9007904e051a17f04359bf709f4a539785592b1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 09:52:38 +0200 Subject: [PATCH 12/16] Reduce char variable sizes --- menu/menu_displaylist.c | 6 +++--- menu/menu_displaylist.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index c6c3f16437..56739e7754 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -476,7 +476,7 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info) gfx_ctx_ident_t ident_info; #endif char tmp[PATH_MAX_LENGTH]; - char feat_str[PATH_MAX_LENGTH]; + char feat_str[255]; const char *tmp_string = NULL; const frontend_ctx_driver_t *frontend = frontend_get_ptr(); settings_t *settings = config_get_ptr(); @@ -515,7 +515,7 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info) #endif { - char cpu_str[PATH_MAX_LENGTH]; + char cpu_str[255]; cpu_str[0] = '\0'; @@ -531,7 +531,7 @@ static int menu_displaylist_parse_system_info(menu_displaylist_info_t *info) } { - char cpu_str[PATH_MAX_LENGTH]; + char cpu_str[255]; char cpu_arch_str[PATH_MAX_LENGTH]; char cpu_text_str[PATH_MAX_LENGTH]; enum frontend_architecture arch = frontend_driver_get_cpu_architecture(); diff --git a/menu/menu_displaylist.h b/menu/menu_displaylist.h index 81b3d3e642..899de4dcd6 100644 --- a/menu/menu_displaylist.h +++ b/menu/menu_displaylist.h @@ -168,9 +168,9 @@ typedef struct menu_displaylist_info char path[PATH_MAX_LENGTH]; char path_b[PATH_MAX_LENGTH]; char path_c[PATH_MAX_LENGTH]; - char label[PATH_MAX_LENGTH]; + char label[255]; uint32_t label_hash; - char exts[PATH_MAX_LENGTH]; + char exts[255]; unsigned type; unsigned type_default; size_t directory_ptr; From 00e68ccd0e6f28109be1493a6a791866a0692ab8 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 10:16:26 +0200 Subject: [PATCH 13/16] Reduce char variables size --- defaults.h | 4 ++-- file_path_special.c | 2 +- gfx/video_thread_wrapper.c | 4 ++-- intl/msg_hash_jp.c | 2 +- intl/msg_hash_us.c | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/defaults.h b/defaults.h index fb42f84502..ac8e3a6fbc 100644 --- a/defaults.h +++ b/defaults.h @@ -85,7 +85,7 @@ struct defaults { char config[PATH_MAX_LENGTH]; char core[PATH_MAX_LENGTH]; - char buildbot_server_url[PATH_MAX_LENGTH]; + char buildbot_server_url[255]; } path; struct @@ -93,7 +93,7 @@ struct defaults int out_latency; float video_refresh_rate; bool video_threaded_enable; - char menu[PATH_MAX_LENGTH]; + char menu[32]; } settings; #ifndef IS_SALAMANDER diff --git a/file_path_special.c b/file_path_special.c index 840af0d05f..4fbdb0f2f5 100644 --- a/file_path_special.c +++ b/file_path_special.c @@ -242,7 +242,7 @@ void fill_pathname_application_path(char *s, size_t len) { pid_t pid; static const char *exts[] = { "exe", "file", "path/a.out" }; - char link_path[PATH_MAX_LENGTH]; + char link_path[255]; link_path[0] = *s = '\0'; pid = getpid(); diff --git a/gfx/video_thread_wrapper.c b/gfx/video_thread_wrapper.c index 014d7a40be..7ea5ff254f 100644 --- a/gfx/video_thread_wrapper.c +++ b/gfx/video_thread_wrapper.c @@ -123,7 +123,7 @@ struct thread_packet struct { - char msg[PATH_MAX_LENGTH]; + char msg[255]; struct font_params params; } osd_message; @@ -216,7 +216,7 @@ struct thread_video bool updated; bool within_thread; uint64_t count; - char msg[PATH_MAX_LENGTH]; + char msg[255]; } frame; video_driver_t video_thread; diff --git a/intl/msg_hash_jp.c b/intl/msg_hash_jp.c index bfae1a9fac..c7f2c7968b 100644 --- a/intl/msg_hash_jp.c +++ b/intl/msg_hash_jp.c @@ -1887,7 +1887,7 @@ static const char *menu_hash_to_str_jp_label_enum(enum msg_hash_enums msg) if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END && msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN) { - static char hotkey_lbl[PATH_MAX_LENGTH] = {0}; + static char hotkey_lbl[128] = {0}; unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN; snprintf(hotkey_lbl, sizeof(hotkey_lbl), "input_hotkey_binds_%d", idx); return hotkey_lbl; diff --git a/intl/msg_hash_us.c b/intl/msg_hash_us.c index de071befc8..d604afaf95 100644 --- a/intl/msg_hash_us.c +++ b/intl/msg_hash_us.c @@ -1889,7 +1889,7 @@ static const char *menu_hash_to_str_us_label_enum(enum msg_hash_enums msg) if (msg <= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_END && msg >= MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN) { - static char hotkey_lbl[PATH_MAX_LENGTH] = {0}; + static char hotkey_lbl[128] = {0}; unsigned idx = msg - MENU_ENUM_LABEL_INPUT_HOTKEY_BIND_BEGIN; snprintf(hotkey_lbl, sizeof(hotkey_lbl), "input_hotkey_binds_%d", idx); return hotkey_lbl; From 13cc4787f2122e9cab8065e53c2adef096fb948f Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 10:19:04 +0200 Subject: [PATCH 14/16] Reduce more char variable sizes --- tasks/task_content.c | 4 ++-- tasks/task_http.c | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tasks/task_content.c b/tasks/task_content.c index 92ae717cac..9f989251c0 100644 --- a/tasks/task_content.c +++ b/tasks/task_content.c @@ -872,8 +872,8 @@ static bool task_load_content(content_ctx_info_t *content_info, bool launched_from_menu, enum content_mode_load mode) { - char name[PATH_MAX_LENGTH]; - char msg[PATH_MAX_LENGTH]; + char name[256]; + char msg[256]; name[0] = msg[0] = '\0'; diff --git a/tasks/task_http.c b/tasks/task_http.c index c22fde832b..a34b4853e4 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -13,7 +13,6 @@ * If not, see . */ -#include #include #include #include @@ -40,7 +39,7 @@ enum http_status_enum typedef struct http_transfer_info { - char url[PATH_MAX_LENGTH]; + char url[255]; int progress; } http_transfer_info_t; @@ -50,8 +49,8 @@ typedef struct http_handle { struct http_connection_t *handle; transfer_cb_t cb; - char elem1[PATH_MAX_LENGTH]; - char url[PATH_MAX_LENGTH]; + char elem1[255]; + char url[255]; } connection; struct http_t *handle; transfer_cb_t cb; @@ -240,7 +239,7 @@ void *task_push_http_transfer(const char *url, bool mute, const char *type, retro_task_callback_t cb, void *user_data) { task_finder_data_t find_data; - char tmp[PATH_MAX_LENGTH]; + char tmp[255]; struct http_connection_t *conn = NULL; retro_task_t *t = NULL; http_handle_t *http = NULL; From 70cbecd9f8d86d060fd3bc7b8dc246d9a7d863d1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 10:33:50 +0200 Subject: [PATCH 15/16] Reduce char variable sizes --- configuration.h | 4 ++-- retroarch.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/configuration.h b/configuration.h index a0f64b2805..0c1a46534f 100644 --- a/configuration.h +++ b/configuration.h @@ -320,8 +320,8 @@ typedef struct settings struct { - char buildbot_url[PATH_MAX_LENGTH]; - char buildbot_assets_url[PATH_MAX_LENGTH]; + char buildbot_url[255]; + char buildbot_assets_url[255]; bool buildbot_auto_extract_archive; } network; diff --git a/retroarch.c b/retroarch.c index 4419814b05..061493fa3a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -126,7 +126,7 @@ enum static jmp_buf error_sjlj_context; static enum rarch_core_type current_core_type = CORE_TYPE_PLAIN; static enum rarch_core_type explicit_current_core_type = CORE_TYPE_PLAIN; -static char error_string[PATH_MAX_LENGTH] = {0}; +static char error_string[255] = {0}; static retro_bits_t has_set_libretro_device; static bool has_set_core = false; From 6310f53587f7d188207cf10c2149b89184485f19 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 27 Oct 2016 10:45:53 +0200 Subject: [PATCH 16/16] Prevent some implicit memsets and reduce the size of some char variables --- camera/drivers/video4linux2.c | 2 +- input/drivers_joypad/linuxraw_joypad.c | 8 ++++++-- libretro-common/file/archive_file_zlib.c | 8 ++++++-- paths.c | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/camera/drivers/video4linux2.c b/camera/drivers/video4linux2.c index 76301f9646..93066d0e55 100644 --- a/camera/drivers/video4linux2.c +++ b/camera/drivers/video4linux2.c @@ -63,7 +63,7 @@ typedef struct video4linux uint32_t *buffer_output; bool ready; - char dev_name[PATH_MAX_LENGTH]; + char dev_name[255]; } video4linux_t; static void process_image(video4linux_t *v4l, const uint8_t *buffer_yuv) diff --git a/input/drivers_joypad/linuxraw_joypad.c b/input/drivers_joypad/linuxraw_joypad.c index 5e7a7eee81..714e75f2c8 100644 --- a/input/drivers_joypad/linuxraw_joypad.c +++ b/input/drivers_joypad/linuxraw_joypad.c @@ -176,7 +176,9 @@ static void handle_plugged_pad(void) else if (event->mask & (IN_CREATE | IN_ATTRIB)) { bool ret; - char path[PATH_MAX_LENGTH] = {0}; + char path[PATH_MAX_LENGTH]; + + path[0] = '\0'; snprintf(path, sizeof(path), "/dev/input/%s", event->name); ret = linuxraw_joypad_init_pad(path, &linuxraw_pads[idx]); @@ -227,11 +229,13 @@ static bool linuxraw_joypad_init(void *data) for (i = 0; i < MAX_USERS; i++) { - char path[PATH_MAX_LENGTH] = {0}; + char path[PATH_MAX_LENGTH]; autoconfig_params_t params = {{0}}; struct linuxraw_joypad *pad = (struct linuxraw_joypad*)&linuxraw_pads[i]; settings_t *settings = config_get_ptr(); + path[0] = '\0'; + params.idx = i; pad->fd = -1; pad->ident = settings->input.device_names[i]; diff --git a/libretro-common/file/archive_file_zlib.c b/libretro-common/file/archive_file_zlib.c index 1809c9f40f..c7577b2607 100644 --- a/libretro-common/file/archive_file_zlib.c +++ b/libretro-common/file/archive_file_zlib.c @@ -433,14 +433,18 @@ static int zip_parse_file_iterate_step_internal( static int zip_parse_file_iterate_step(file_archive_transfer_t *state, const char *valid_exts, struct archive_extract_userdata *userdata, file_archive_file_cb file_cb) { + char filename[PATH_MAX_LENGTH]; + int ret; const uint8_t *cdata = NULL; uint32_t checksum = 0; uint32_t size = 0; uint32_t csize = 0; unsigned cmode = 0; unsigned payload = 0; - char filename[PATH_MAX_LENGTH] = {0}; - int ret = zip_parse_file_iterate_step_internal(state, filename, + + filename[0] = '\0'; + + ret = zip_parse_file_iterate_step_internal(state, filename, &cdata, &cmode, &size, &csize, &checksum, &payload); diff --git a/paths.c b/paths.c index ba337ea7f0..64b9b916cc 100644 --- a/paths.c +++ b/paths.c @@ -697,7 +697,7 @@ void path_clear_all(void) enum rarch_content_type path_is_media_type(const char *path) { - char ext_lower[PATH_MAX_LENGTH]; + char ext_lower[128]; ext_lower[0] = '\0';