diff --git a/input/input_driver.c b/input/input_driver.c index cf86f54d7f..1a1fc3662d 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -2364,7 +2364,10 @@ void input_config_parse_joy_axis(void *data, const char *prefix, if (config_get_string(conf, key_label, &tmp_a)) { - strlcpy(bind->joyaxis_label, tmp_a, sizeof(bind->joyaxis_label)); + if (bind->joyaxis_label && + !string_is_empty(bind->joyaxis_label)) + free(bind->joyaxis_label); + bind->joyaxis_label = strdup(tmp_a); free(tmp_a); } } @@ -2423,7 +2426,8 @@ static void input_config_get_bind_string_joyaxis(char *buf, const char *prefix, { settings_t *settings = config_get_ptr(); - if (!string_is_empty(bind->joyaxis_label) + if (bind->joyaxis_label && + !string_is_empty(bind->joyaxis_label) && settings->bools.input_descriptor_label_show) snprintf(buf, size, "%s%s (axis) ", prefix, bind->joyaxis_label); else diff --git a/input/input_driver.h b/input/input_driver.h index 0f99da1940..17d135402d 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -115,7 +115,7 @@ struct retro_keybind uint32_t orig_joyaxis; char *joykey_label; - char joyaxis_label[64]; + char *joyaxis_label; }; typedef struct rarch_joypad_info diff --git a/tasks/task_autodetect.c b/tasks/task_autodetect.c index 46c64e46a7..b071b94d59 100644 --- a/tasks/task_autodetect.c +++ b/tasks/task_autodetect.c @@ -478,8 +478,11 @@ bool input_autoconfigure_connect( if (input_autoconf_binds[state->idx][i].joykey_label && !string_is_empty(input_autoconf_binds[state->idx][i].joykey_label)) free(input_autoconf_binds[state->idx][i].joykey_label); - input_autoconf_binds[state->idx][i].joykey_label = NULL; - input_autoconf_binds[state->idx][i].joyaxis_label[0] = '\0'; + if (input_autoconf_binds[state->idx][i].joyaxis_label + && !string_is_empty(input_autoconf_binds[state->idx][i].joyaxis_label)) + free(input_autoconf_binds[state->idx][i].joyaxis_label); + input_autoconf_binds[state->idx][i].joykey_label = NULL; + input_autoconf_binds[state->idx][i].joyaxis_label = NULL; } input_autoconfigured[state->idx] = false;