(task_save.c) Allocate the string on heap instead of putting it on stack

This commit is contained in:
twinaphex 2021-03-17 10:12:04 +01:00
parent be7dd98939
commit 7e2113b405

View File

@ -757,12 +757,7 @@ static void task_save_handler(retro_task_t *task)
if (task_get_cancelled(task) || written != remaining) if (task_get_cancelled(task) || written != remaining)
{ {
#if defined(__PSL1GHT__) || defined(__PS3__)
char *err = (char*)malloc(8192 * sizeof(char)); char *err = (char*)malloc(8192 * sizeof(char));
#else
char err[8192];
#endif
err[0] = '\0'; err[0] = '\0';
if (state->undo_save) if (state->undo_save)
@ -781,10 +776,8 @@ static void task_save_handler(retro_task_t *task)
msg_hash_to_str(MSG_FAILED_TO_SAVE_STATE_TO), state->path); msg_hash_to_str(MSG_FAILED_TO_SAVE_STATE_TO), state->path);
task_set_error(task, strdup(err)); task_set_error(task, strdup(err));
task_save_handler_finished(task, state);
#if defined(__PSL1GHT__) || defined(__PS3__)
free(err); free(err);
#endif task_save_handler_finished(task, state);
return; return;
} }
@ -1002,41 +995,37 @@ static void task_load_handler(retro_task_t *task)
if (state->bytes_read == state->size) if (state->bytes_read == state->size)
{ {
#if defined(__PSL1GHT__) || defined(__PS3__)
char *msg = (char*)malloc(8192 * sizeof(char));
#else
char msg[8192];
#endif
msg[0] = '\0';
task_free_title(task); task_free_title(task);
if (state->autoload)
snprintf(msg, sizeof(msg),
"%s \"%s\" %s.",
msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_FROM),
state->path,
msg_hash_to_str(MSG_SUCCEEDED));
else
{
if (state->state_slot < 0)
strlcpy(msg, msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT_AUTO),
sizeof(msg));
else
snprintf(msg, sizeof(msg),
msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT),
state->state_slot);
}
if (!task_get_mute(task)) if (!task_get_mute(task))
{
char *msg = (char*)malloc(8192 * sizeof(char));
msg[0] = '\0';
if (state->autoload)
snprintf(msg, sizeof(msg),
"%s \"%s\" %s.",
msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_FROM),
state->path,
msg_hash_to_str(MSG_SUCCEEDED));
else
{
if (state->state_slot < 0)
strlcpy(msg, msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT_AUTO),
sizeof(msg));
else
snprintf(msg, sizeof(msg),
msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT),
state->state_slot);
}
task_set_title(task, strdup(msg)); task_set_title(task, strdup(msg));
free(msg);
}
task_load_handler_finished(task, state); task_load_handler_finished(task, state);
#if defined(__PSL1GHT__) || defined(__PS3__)
free(msg);
#endif
return; return;
} }