Revision: 1755
http://geeqie.svn.sourceforge.net/geeqie/?rev=1755&view=rev
Author: nadvornik
Date: 2009-06-20 18:42:23 +0000 (Sat, 20 Jun 2009)
Log Message:
-----------
fixed leak in file_util_* functions
- file_util_* are changed to take over the filelist and free it when
done
- make sure that these functions are called correctly
Modified Paths:
--------------
trunk/src/collect-table.c
trunk/src/collect.c
trunk/src/dupe.c
trunk/src/layout_util.c
trunk/src/metadata.c
trunk/src/search.c
trunk/src/utilops.c
trunk/src/utilops.h
trunk/src/view_dir.c
trunk/src/view_file.c
Modified: trunk/src/collect-table.c
===================================================================
--- trunk/src/collect-table.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/collect-table.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -657,18 +657,12 @@
{
CollectTable *ct;
const gchar *key = data;
- GList *list;
ct = submenu_item_get_data(widget);
if (!ct) return;
- list = collection_table_popup_file_list(ct);
- if (list)
- {
- file_util_start_editor_from_filelist(key, list, NULL,
ct->listview);
- filelist_free(list);
- }
+ file_util_start_editor_from_filelist(key,
collection_table_popup_file_list(ct), NULL, ct->listview);
}
static void collection_table_popup_copy_cb(GtkWidget *widget, gpointer data)
Modified: trunk/src/collect.c
===================================================================
--- trunk/src/collect.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/collect.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -968,14 +968,6 @@
break;
}
}
-#if 0
- if (edit_val != -1)
- {
- list = collection_table_selection_get_list(cw->table);
- file_util_start_editor_from_filelist(edit_val, list,
cw->window);
- filelist_free(list);
- }
-#endif
return stop_signal;
}
Modified: trunk/src/dupe.c
===================================================================
--- trunk/src/dupe.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/dupe.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -2042,13 +2042,7 @@
static void dupe_window_edit_selected(DupeWindow *dw, const gchar *key)
{
- GList *list;
-
- list = dupe_listview_get_selection(dw, dw->listview);
-
- file_util_start_editor_from_filelist(key, list, NULL, dw->window);
-
- filelist_free(list);
+ file_util_start_editor_from_filelist(key,
dupe_listview_get_selection(dw, dw->listview), NULL, dw->window);
}
static void dupe_window_collection_from_selection(DupeWindow *dw)
Modified: trunk/src/layout_util.c
===================================================================
--- trunk/src/layout_util.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/layout_util.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -991,15 +991,12 @@
static void layout_menu_edit_cb(GtkAction *action, gpointer data)
{
LayoutWindow *lw = data;
- GList *list;
const gchar *key = gtk_action_get_name(action);
if (!editor_window_flag_set(key))
layout_exit_fullscreen(lw);
- list = layout_selection_list(lw);
- file_util_start_editor_from_filelist(key, list, layout_get_path(lw),
lw->window);
- filelist_free(list);
+ file_util_start_editor_from_filelist(key, layout_selection_list(lw),
layout_get_path(lw), lw->window);
}
#if 0
Modified: trunk/src/metadata.c
===================================================================
--- trunk/src/metadata.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/metadata.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -144,8 +144,6 @@
file_util_write_metadata(NULL, to_approve, NULL, force_dialog,
done_func, done_data);
- filelist_free(to_approve);
-
return (metadata_write_queue != NULL);
}
Modified: trunk/src/search.c
===================================================================
--- trunk/src/search.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/search.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -662,11 +662,7 @@
static void search_result_edit_selected(SearchData *sd, const gchar *key)
{
- GList *list;
-
- list = search_result_selection_list(sd);
- file_util_start_editor_from_filelist(key, list, NULL, sd->window);
- filelist_free(list);
+ file_util_start_editor_from_filelist(key,
search_result_selection_list(sd), NULL, sd->window);
}
static void search_result_collection_from_selection(SearchData *sd)
Modified: trunk/src/utilops.c
===================================================================
--- trunk/src/utilops.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/utilops.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -1931,10 +1931,9 @@
}
}
-static void file_util_delete_full(FileData *source_fd, GList *source_list,
GtkWidget *parent, UtilityPhase phase)
+static void file_util_delete_full(FileData *source_fd, GList *flist, GtkWidget
*parent, UtilityPhase phase)
{
UtilityData *ud;
- GList *flist = filelist_copy(source_list);
GList *ungrouped = NULL;
if (source_fd)
@@ -1979,10 +1978,9 @@
}
-static void file_util_write_metadata_full(FileData *source_fd, GList
*source_list, GtkWidget *parent, UtilityPhase phase, FileUtilDoneFunc
done_func, gpointer done_data)
+static void file_util_write_metadata_full(FileData *source_fd, GList *flist,
GtkWidget *parent, UtilityPhase phase, FileUtilDoneFunc done_func, gpointer
done_data)
{
UtilityData *ud;
- GList *flist = filelist_copy(source_list);
if (source_fd)
flist = g_list_append(flist, file_data_ref(source_fd));
@@ -2023,10 +2021,9 @@
file_util_dialog_run(ud);
}
-static void file_util_move_full(FileData *source_fd, GList *source_list, const
gchar *dest_path, GtkWidget *parent, UtilityPhase phase)
+static void file_util_move_full(FileData *source_fd, GList *flist, const gchar
*dest_path, GtkWidget *parent, UtilityPhase phase)
{
UtilityData *ud;
- GList *flist = filelist_copy(source_list);
GList *ungrouped = NULL;
if (source_fd)
@@ -2070,10 +2067,9 @@
file_util_dialog_run(ud);
}
-static void file_util_copy_full(FileData *source_fd, GList *source_list, const
gchar *dest_path, GtkWidget *parent, UtilityPhase phase)
+static void file_util_copy_full(FileData *source_fd, GList *flist, const gchar
*dest_path, GtkWidget *parent, UtilityPhase phase)
{
UtilityData *ud;
- GList *flist = filelist_copy(source_list);
GList *ungrouped = NULL;
if (source_fd)
@@ -2117,10 +2113,9 @@
file_util_dialog_run(ud);
}
-static void file_util_rename_full(FileData *source_fd, GList *source_list,
const gchar *dest_path, GtkWidget *parent, UtilityPhase phase)
+static void file_util_rename_full(FileData *source_fd, GList *flist, const
gchar *dest_path, GtkWidget *parent, UtilityPhase phase)
{
UtilityData *ud;
- GList *flist = filelist_copy(source_list);
GList *ungrouped = NULL;
if (source_fd)
@@ -2164,10 +2159,9 @@
file_util_dialog_run(ud);
}
-static void file_util_start_editor_full(const gchar *key, FileData *source_fd,
GList *source_list, const gchar *dest_path, const gchar *working_directory,
GtkWidget *parent, UtilityPhase phase)
+static void file_util_start_editor_full(const gchar *key, FileData *source_fd,
GList *flist, const gchar *dest_path, const gchar *working_directory, GtkWidget
*parent, UtilityPhase phase)
{
UtilityData *ud;
- GList *flist;
GList *ungrouped = NULL;
if (editor_no_param(key))
@@ -2179,18 +2173,18 @@
if (source_fd)
file_directory =
remove_level_from_path(source_fd->path);
- if (!file_directory && source_list)
- file_directory =
remove_level_from_path(((FileData *)source_list->data)->path);
+ if (!file_directory && flist)
+ file_directory =
remove_level_from_path(((FileData *)flist->data)->path);
working_directory = file_directory;
}
/* just start the editor, don't care about files */
start_editor(key, working_directory);
g_free(file_directory);
+ filelist_free(flist);
return;
}
- flist = filelist_copy(source_list);
if (source_fd)
{
@@ -2794,5 +2788,6 @@
gtk_clipboard_set_text(clipboard, new->str, new->len);
g_string_free(new, TRUE);
+ filelist_free(list);
}
/* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
Modified: trunk/src/utilops.h
===================================================================
--- trunk/src/utilops.h 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/utilops.h 2009-06-20 18:42:23 UTC (rev 1755)
@@ -33,6 +33,8 @@
GenericDialog *file_util_warning_dialog(const gchar *heading, const gchar
*message,
const gchar *icon_stock_id, GtkWidget
*parent);
+/* all functions takes over the filelist and frees it when done */
+
void file_util_delete(FileData *source_fd, GList *source_list, GtkWidget
*parent);
void file_util_move(FileData *source_fd, GList *source_list, const gchar
*dest_path, GtkWidget *parent);
void file_util_copy(FileData *source_fd, GList *source_list, const gchar
*dest_path, GtkWidget *parent);
Modified: trunk/src/view_dir.c
===================================================================
--- trunk/src/view_dir.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/view_dir.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -822,11 +822,13 @@
{
file_util_copy_simple(list, fd->path,
vd->widget);
done = TRUE;
+ list = NULL;
}
else if (context->actions == GDK_ACTION_MOVE)
{
file_util_move_simple(list, fd->path,
vd->widget);
done = TRUE;
+ list = NULL;
}
}
Modified: trunk/src/view_file.c
===================================================================
--- trunk/src/view_file.c 2009-06-20 16:46:32 UTC (rev 1754)
+++ trunk/src/view_file.c 2009-06-20 18:42:23 UTC (rev 1755)
@@ -314,15 +314,12 @@
{
ViewFile *vf;
const gchar *key = data;
- GList *list;
vf = submenu_item_get_data(widget);
if (!vf) return;
- list = vf_pop_menu_file_list(vf);
- file_util_start_editor_from_filelist(key, list, vf->dir_fd->path,
vf->listview);
- filelist_free(list);
+ file_util_start_editor_from_filelist(key, vf_pop_menu_file_list(vf),
vf->dir_fd->path, vf->listview);
}
static void vf_pop_menu_view_cb(GtkWidget *widget, gpointer data)
@@ -579,7 +576,7 @@
g_free(str_sel_mark_minus);
}
- vf->editmenu_fd_list = vf_selection_get_list(vf);
+ vf->editmenu_fd_list = vf_pop_menu_file_list(vf);
submenu_add_edit(menu, &item, G_CALLBACK(vf_pop_menu_edit_cb), vf,
vf->editmenu_fd_list);
gtk_widget_set_sensitive(item, active);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Are you an open source citizen? Join us for the Open Source Bridge conference!
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!
http://ad.doubleclick.net/clk;215844324;13503038;v?http://opensourcebridge.org
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn