From 501fe45a9f0dadaba9a25a4347311507e44a70d1 Mon Sep 17 00:00:00 2001 From: Jamiras Date: Mon, 15 Mar 2021 19:42:25 -0600 Subject: [PATCH] have http tasks clean up after themselves --- menu/cbs/menu_cbs_ok.c | 29 ----------------------------- retroarch.c | 19 +------------------ tasks/task_core_updater.c | 11 ++++------- tasks/task_http.c | 12 ++++++++++++ tasks/task_pl_thumbnail_download.c | 7 ------- 5 files changed, 17 insertions(+), 61 deletions(-) diff --git a/menu/cbs/menu_cbs_ok.c b/menu/cbs/menu_cbs_ok.c index d4c5f2fe90..d8432b4463 100644 --- a/menu/cbs/menu_cbs_ok.c +++ b/menu/cbs/menu_cbs_ok.c @@ -4123,13 +4123,6 @@ finish: subdir_path, 0, 0, 0, ACTION_OK_DL_CORE_CONTENT_DIRS_SUBDIR_LIST);*/ } - if (data) - { - if (data->data) - free(data->data); - free(data); - } - if (user_data) free(user_data); } @@ -4168,13 +4161,6 @@ finish: refresh = true; menu_entries_ctl(MENU_ENTRIES_CTL_UNSET_REFRESH, &refresh); - if (data) - { - if (data->data) - free(data->data); - free(data); - } - if (!err && !string_ends_with_size(state->path, FILE_PATH_INDEX_DIRS_URL, @@ -4485,13 +4471,6 @@ finish: discord_avatar_set_ready(true); #endif - if (data) - { - if (data->data) - free(data->data); - free(data); - } - if (transf) free(transf); } @@ -5548,16 +5527,8 @@ finish: if (err) RARCH_ERR("%s: %s\n", msg_hash_to_str(MSG_DOWNLOAD_FAILED), err); - if (data) - { - if (data->data) - free(data->data); - free(data); - } - if (user_data) free(user_data); - } #ifndef RARCH_CONSOLE diff --git a/retroarch.c b/retroarch.c index 0af5d0cde5..7e293275cc 100644 --- a/retroarch.c +++ b/retroarch.c @@ -8867,13 +8867,6 @@ finish: if (err) RARCH_ERR("%s: %s\n", msg_hash_to_str(MSG_DOWNLOAD_FAILED), err); - if (data) - { - if (data->data) - free(data->data); - free(data); - } - if (user_data) free(user_data); } @@ -9763,10 +9756,7 @@ static void netplay_announce_cb(retro_task_t *task, char *host_string = NULL; if (data->len == 0) - { - free(task_data); return; - } buf = (char*)calloc(1, data->len + 1); @@ -9778,7 +9768,6 @@ static void netplay_announce_cb(retro_task_t *task, { string_list_free(lines); free(buf); - free(task_data); return; } @@ -9905,7 +9894,7 @@ static void netplay_announce_cb(retro_task_t *task, string_list_free(lines); free(buf); - free(task_data); + if (mitm_ip) free(mitm_ip); if (mitm_port) @@ -14042,12 +14031,6 @@ finish: if (error) RARCH_ERR("%s: %s\n", msg_hash_to_str(MSG_DOWNLOAD_FAILED), error); - if (data) - { - if (data->data) - free(data->data); - free(data); - } if (user_data) free(user_data); diff --git a/tasks/task_core_updater.c b/tasks/task_core_updater.c index 1dae3c27bf..d2ab76ff6d 100644 --- a/tasks/task_core_updater.c +++ b/tasks/task_core_updater.c @@ -234,10 +234,13 @@ static void cb_http_task_core_updater_get_list( if (!list_handle) goto finish; + task_set_data(task, NULL); /* going to pass ownership to list_handle */ + list_handle->http_data = data; list_handle->http_task_complete = true; list_handle->http_task_success = success; + finish: /* Log any error messages */ @@ -258,6 +261,7 @@ static void free_core_updater_list_handle( if (list_handle->http_data) { + /* since we took onwership, we have to destroy it ourself */ if (list_handle->http_data->data) free(list_handle->http_data->data); @@ -644,13 +648,6 @@ finish: RARCH_ERR("[core updater] Download of '%s' failed: %s\n", (transf ? transf->path: "unknown"), err); - if (data) - { - if (data->data) - free(data->data); - free(data); - } - if (transf) free(transf); } diff --git a/tasks/task_http.c b/tasks/task_http.c index 976ad60176..33d3343aae 100644 --- a/tasks/task_http.c +++ b/tasks/task_http.c @@ -211,6 +211,17 @@ task_finished: free(http); } +static void task_http_transfer_cleanup(retro_task_t *task) +{ + http_transfer_data_t* data = task_get_data(task); + if (data) + { + if (data->data) + free(data->data); + free(data); + } +} + static bool task_http_finder(retro_task_t *task, void *user_data) { http_handle_t *http = NULL; @@ -305,6 +316,7 @@ static void* task_push_http_transfer_generic( t->mute = mute; t->callback = cb; t->progress_cb = http_transfer_progress_cb; + t->cleanup = task_http_transfer_cleanup; t->user_data = user_data; t->progress = -1; diff --git a/tasks/task_pl_thumbnail_download.c b/tasks/task_pl_thumbnail_download.c index 994a69e088..46f18845c0 100644 --- a/tasks/task_pl_thumbnail_download.c +++ b/tasks/task_pl_thumbnail_download.c @@ -227,13 +227,6 @@ finish: (transf ? transf->path: "unknown"), err); } - if (data) - { - if (data->data) - free(data->data); - free(data); - } - if (transf) free(transf); }