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)
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
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);
}
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);
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;
}
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;
}
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
{
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;
}
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;
}
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);
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);
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);
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;
}
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;
}
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);
}
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;
}