diff --git a/tasks/task_save.c b/tasks/task_save.c index ee1917c4af..022db6d0c2 100644 --- a/tasks/task_save.c +++ b/tasks/task_save.c @@ -757,8 +757,9 @@ static void task_save_handler(retro_task_t *task) if (task_get_cancelled(task) || written != remaining) { - char *err = (char*)malloc(8192 * sizeof(char)); - err[0] = '\0'; + size_t err_size = 8192 * sizeof(char); + char *err = (char*)malloc(err_size); + err[0] = '\0'; if (state->undo_save) { @@ -766,12 +767,12 @@ static void task_save_handler(retro_task_t *task) msg_hash_to_str(MSG_FAILED_TO_UNDO_SAVE_STATE), undo_save_buf.path); - snprintf(err, sizeof(err), "%s \"%s\".", + snprintf(err, err_size - 1, "%s \"%s\".", msg_hash_to_str(MSG_FAILED_TO_UNDO_SAVE_STATE), "RAM"); } else - snprintf(err, sizeof(err), + snprintf(err, err_size - 1, "%s %s", msg_hash_to_str(MSG_FAILED_TO_SAVE_STATE_TO), state->path); @@ -999,12 +1000,13 @@ static void task_load_handler(retro_task_t *task) if (!task_get_mute(task)) { - char *msg = (char*)malloc(8192 * sizeof(char)); + size_t msg_size = 8192 * sizeof(char); + char *msg = (char*)malloc(msg_size); msg[0] = '\0'; if (state->autoload) - snprintf(msg, sizeof(msg), + snprintf(msg, msg_size - 1, "%s \"%s\" %s.", msg_hash_to_str(MSG_AUTOLOADING_SAVESTATE_FROM), state->path, @@ -1013,15 +1015,14 @@ static void task_load_handler(retro_task_t *task) { if (state->state_slot < 0) strlcpy(msg, msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT_AUTO), - sizeof(msg)); + msg_size - 1); else - snprintf(msg, sizeof(msg), + snprintf(msg, msg_size - 1, msg_hash_to_str(MSG_LOADED_STATE_FROM_SLOT), state->state_slot); } task_set_title(task, strdup(msg)); - free(msg); }