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

Reply via email to