From f22b077887532a146c23a80445aac080f606ae0c Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 22 Mar 2021 19:24:14 +0100 Subject: [PATCH] (task_database.c) Optimizations: - strlen was being called on path for each loop iteration, when path is not subject to change - do it once outside - String copying was being performed even when the string would equal a string not subject to change --- tasks/task_database.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/tasks/task_database.c b/tasks/task_database.c index 361fa18dae..efe052cc2f 100644 --- a/tasks/task_database.c +++ b/tasks/task_database.c @@ -643,27 +643,26 @@ static int database_info_list_iterate_end_no_match( if (archive_list && archive_list->size > 0) { unsigned i; + size_t path_len = strlen(path); for (i = 0; i < archive_list->size; i++) { - char new_path[PATH_MAX_LENGTH]; - size_t path_len = strlen(path); - - new_path[0] = '\0'; - - strlcpy(new_path, path, sizeof(new_path)); - if (path_len + strlen(archive_list->elems[i].data) + 1 < PATH_MAX_LENGTH) { + char new_path[PATH_MAX_LENGTH]; + new_path[0] = '\0'; + strlcpy(new_path, path, sizeof(new_path)); new_path[path_len] = '#'; strlcpy(new_path + path_len + 1, - archive_list->elems[i].data, - sizeof(new_path) - path_len); + archive_list->elems[i].data, + sizeof(new_path) - path_len); + string_list_append(db->list, new_path, + archive_list->elems[i].attr); } - - string_list_append(db->list, new_path, - archive_list->elems[i].attr); + else + string_list_append(db->list, path, + archive_list->elems[i].attr); } string_list_free(archive_list);