Use g_list_free_full
authorArkadiy Illarionov <qarkai@gmail.com>
Thu, 20 Jul 2023 21:57:36 +0000 (00:57 +0300)
committerColin Clark <colin.clark@cclark.uk>
Sat, 22 Jul 2023 15:43:14 +0000 (16:43 +0100)
13 files changed:
src/bar.cc
src/collect-io.cc
src/exif.cc
src/filedata.cc
src/filefilter.cc
src/image-load.cc
src/metadata.cc
src/pan-view/pan-folder.cc
src/pan-view/pan-view.cc
src/pixbuf-renderer.cc
src/renderer-tiles.cc
src/ui-spinner.cc
src/ui-tabcomp.cc

index 28e2542..9887d5d 100644 (file)
@@ -564,21 +564,14 @@ GtkWidget *bar_find_pane_by_id(GtkWidget *bar, PaneType type, const gchar *id)
 void bar_clear(GtkWidget *bar)
 {
        BarData *bd;
-       GList *list, *work;
+       GList *list;
 
        bd = static_cast<BarData *>(g_object_get_data(G_OBJECT(bar), "bar_data"));
        if (!bd) return;
 
        list = gtk_container_get_children(GTK_CONTAINER(bd->vbox));
 
-       work = list;
-       while (work)
-               {
-               auto widget = static_cast<GtkWidget *>(work->data);
-               gtk_widget_destroy(widget);
-               work = work->next;
-               }
-       g_list_free(list);
+       g_list_free_full(list, reinterpret_cast<GDestroyNotify>(gtk_widget_destroy));
 }
 
 void bar_write_config(GtkWidget *bar, GString *outstr, gint indent)
index cc974c3..2dbecf8 100644 (file)
@@ -542,19 +542,7 @@ static void collect_manager_action_unref(CollectManagerAction *action)
 
 static void collect_manager_entry_free_data(CollectManagerEntry *entry)
 {
-       GList *work;
-
-       work = entry->add_list;
-       while (work)
-               {
-               CollectManagerAction *action;
-
-               action = static_cast<CollectManagerAction *>(work->data);
-               work = work->next;
-
-               collect_manager_action_unref(action);
-               }
-       g_list_free(entry->add_list);
+       g_list_free_full(entry->add_list, reinterpret_cast<GDestroyNotify>(collect_manager_action_unref));
        if (g_hash_table_size(entry->oldpath_hash) > 0)
                g_hash_table_destroy(entry->oldpath_hash);
        else
index 7936592..d70e8c6 100644 (file)
@@ -1200,19 +1200,9 @@ ExifData *exif_get_original(ExifData *processed)
 
 void exif_free(ExifData *exif)
 {
-       GList *work;
-
        if (!exif) return;
 
-       work = exif->items;
-       while (work)
-               {
-               auto item = static_cast<ExifItem *>(work->data);
-               work = work->next;
-               exif_item_free(item);
-               }
-
-       g_list_free(exif->items);
+       g_list_free_full(exif->items, reinterpret_cast<GDestroyNotify>(exif_item_free));
        g_free(exif->path);
        g_free(exif);
 }
index 99b9447..214ed70 100644 (file)
@@ -791,15 +791,7 @@ static void file_data_consider_free(FileData *fd)
        DEBUG_2("file_data_consider_free: deleting '%s', parent '%s'",
                fd->path, fd->parent ? parent->path : "-");
 
-       work = parent->sidecar_files;
-       while (work)
-               {
-               auto sfd = static_cast<FileData *>(work->data);
-               file_data_free(sfd);
-               work = work->next;
-               }
-
-       g_list_free(parent->sidecar_files);
+       g_list_free_full(parent->sidecar_files, reinterpret_cast<GDestroyNotify>(file_data_free));
        parent->sidecar_files = nullptr;
 
        file_data_free(parent);
index bd4690c..5134cfc 100644 (file)
@@ -160,17 +160,7 @@ static void filter_add_if_missing(const gchar *key, const gchar *description, co
 
 void filter_reset()
 {
-       GList *work;
-
-       work = filter_list;
-       while (work)
-               {
-               auto fe = static_cast<FilterEntry *>(work->data);
-               work = work->next;
-               filter_entry_free(fe);
-               }
-
-       g_list_free(filter_list);
+       g_list_free_full(filter_list, reinterpret_cast<GDestroyNotify>(filter_entry_free));
        filter_list = nullptr;
 }
 
@@ -580,16 +570,7 @@ GList *sidecar_ext_get_list()
 
 static void sidecar_ext_free_list()
 {
-       GList *work;
-
-       work = sidecar_ext_list;
-       while (work)
-               {
-               auto ext = static_cast<gchar *>(work->data);
-               work = work->next;
-               g_free(ext);
-               }
-       g_list_free(sidecar_ext_list);
+       g_list_free_full(sidecar_ext_list, g_free);
        sidecar_ext_list = nullptr;
 }
 
index d8c908b..4402c51 100644 (file)
@@ -1155,9 +1155,8 @@ void image_loader_delay_area_ready(ImageLoader *il, gboolean enable)
                        work = work->next;
 
                        g_signal_emit(il, signals[SIGNAL_AREA_READY], 0, par->x, par->y, par->w, par->h);
-                       g_free(par);
                        }
-               g_list_free(list);
+               g_list_free_full(list, g_free);
                }
        else
                {
index 6226d59..31804c7 100644 (file)
@@ -162,18 +162,13 @@ static void metadata_cache_remove(FileData *fd, const gchar *key)
 
 void metadata_cache_free(FileData *fd)
 {
-       GList *work;
        if (fd->cached_metadata) DEBUG_1("freed %s\n", fd->path);
 
-       work = fd->cached_metadata;
-       while (work)
+       g_list_free_full(fd->cached_metadata, [](gpointer data)
                {
-               auto entry = static_cast<GList *>(work->data);
+               auto entry = static_cast<GList *>(data);
                g_list_free_full(entry, g_free);
-
-               work = work->next;
-               }
-       g_list_free(fd->cached_metadata);
+               });
        fd->cached_metadata = nullptr;
 }
 
index bb972f6..5911d3a 100644 (file)
@@ -327,18 +327,7 @@ static FlowerGroup *pan_flower_group(PanWindow *pw, FileData *dir_fd, gint x, gi
 
        if (!f && !group->children)
                {
-               work = group->items;
-               while (work)
-                       {
-                       PanItem *pi;
-
-                       pi = static_cast<PanItem *>(work->data);
-                       work = work->next;
-
-                       pan_item_free(pi);
-                       }
-
-               g_list_free(group->items);
+               g_list_free_full(group->items, reinterpret_cast<GDestroyNotify>(pan_item_free));
                g_free(group);
                group = nullptr;
                }
index b39c7fb..a469a9a 100644 (file)
@@ -569,22 +569,13 @@ GList *pan_cache_sort(GList *list, SortType method, gboolean ascend)
 
 static void pan_cache_free(PanWindow *pw)
 {
-       GList *work;
-
-       work = pw->cache_list;
-       while (work)
+       g_list_free_full(pw->cache_list, [](gpointer data)
                {
-               PanCacheData *pc;
-
-               pc = static_cast<PanCacheData *>(work->data);
-               work = work->next;
-
+               auto pc = static_cast<PanCacheData *>(data);
                cache_sim_data_free(pc->cd);
                file_data_unref(pc->fd);
                g_free(pc);
-               }
-
-       g_list_free(pw->cache_list);
+               });
        pw->cache_list = nullptr;
 
        filelist_free(pw->cache_todo);
@@ -711,21 +702,12 @@ void pan_cache_sync_date(PanWindow *pw, GList *list)
 
 static void pan_grid_clear(PanWindow *pw)
 {
-       GList *work;
-
-       work = pw->list_grid;
-       while (work)
+       g_list_free_full(pw->list_grid, [](gpointer data)
                {
-               PanGrid *pg;
-
-               pg = static_cast<PanGrid *>(work->data);
-               work = work->next;
-
+               auto pg = static_cast<PanGrid *>(data);
                g_list_free(pg->list);
                g_free(pg);
-               }
-
-       g_list_free(pw->list_grid);
+               });
        pw->list_grid = nullptr;
 
        pw->list = g_list_concat(pw->list, pw->list_static);
@@ -830,20 +812,9 @@ static void pan_grid_build(PanWindow *pw, gint width, gint height, gint grid_siz
 
 static void pan_window_items_free(PanWindow *pw)
 {
-       GList *work;
-
        pan_grid_clear(pw);
 
-       work = pw->list;
-       while (work)
-               {
-               auto pi = static_cast<PanItem *>(work->data);
-               work = work->next;
-
-               pan_item_free(pi);
-               }
-
-       g_list_free(pw->list);
+       g_list_free_full(pw->list, reinterpret_cast<GDestroyNotify>(pan_item_free));
        pw->list = nullptr;
 
        g_list_free(pw->queue);
index 9c2ab42..9c75b48 100644 (file)
@@ -957,20 +957,7 @@ static void pr_source_tile_free(SourceTile *st)
 
 static void pr_source_tile_free_all(PixbufRenderer *pr)
 {
-       GList *work;
-
-       work = pr->source_tiles;
-       while (work)
-               {
-               SourceTile *st;
-
-               st = static_cast<SourceTile *>(work->data);
-               work = work->next;
-
-               pr_source_tile_free(st);
-               }
-
-       g_list_free(pr->source_tiles);
+       g_list_free_full(pr->source_tiles, reinterpret_cast<GDestroyNotify>(pr_source_tile_free));
        pr->source_tiles = nullptr;
 }
 
index 20b804e..7f5f95c 100644 (file)
@@ -305,20 +305,7 @@ static void rt_tile_free(ImageTile *it)
 
 static void rt_tile_free_all(RendererTiles *rt)
 {
-       GList *work;
-
-       work = rt->tiles;
-       while (work)
-               {
-               ImageTile *it;
-
-               it = static_cast<ImageTile *>(work->data);
-               work = work->next;
-
-               rt_tile_free(it);
-               }
-
-       g_list_free(rt->tiles);
+       g_list_free_full(rt->tiles, reinterpret_cast<GDestroyNotify>(rt_tile_free));
        rt->tiles = nullptr;
        rt->tile_cache_size = 0;
 }
index d1a16d3..f26bba0 100644 (file)
@@ -93,19 +93,10 @@ static void spinner_set_timeout(SpinnerData *sp, gint interval)
 static void spinner_destroy_cb(GtkWidget *UNUSED(widget), gpointer data)
 {
        auto sp = static_cast<SpinnerData *>(data);
-       GList *work;
 
        spinner_set_timeout(sp, 0);
 
-       work = sp->list;
-       while (work)
-               {
-               auto pb = static_cast<GdkPixbuf *>(work->data);
-               work = work->next;
-
-               g_object_unref(pb);
-               }
-       g_list_free(sp->list);
+       g_list_free_full(sp->list, g_object_unref);
        g_free(sp);
 }
 
index 7c03ae9..fbd58af 100644 (file)
@@ -88,20 +88,10 @@ static gint tab_completion_do(TabCompData *td);
 
 static void tab_completion_free_list(TabCompData *td)
 {
-       GList *list;
-
        g_free(td->dir_path);
        td->dir_path = nullptr;
 
-       list = td->file_list;
-
-       while (list)
-               {
-               g_free(list->data);
-               list = list->next;
-               }
-
-       g_list_free(td->file_list);
+       g_list_free_full(td->file_list, g_free);
        td->file_list = nullptr;
 }