# HG changeset patch # User nadvornik # Date 1245523343 0 # Node ID 349ebc02b8e22862621401d3cdd80b8751a7e827 # Parent 6600a2754e50a0c48f746a880fc1545d727738dc 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 diff -r 6600a2754e50 -r 349ebc02b8e2 src/collect-table.c --- a/src/collect-table.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/collect-table.c Sat Jun 20 18:42:23 2009 +0000 @@ -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) diff -r 6600a2754e50 -r 349ebc02b8e2 src/collect.c --- a/src/collect.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/collect.c Sat Jun 20 18:42:23 2009 +0000 @@ -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; } diff -r 6600a2754e50 -r 349ebc02b8e2 src/dupe.c --- a/src/dupe.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/dupe.c Sat Jun 20 18:42:23 2009 +0000 @@ -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) diff -r 6600a2754e50 -r 349ebc02b8e2 src/layout_util.c --- a/src/layout_util.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/layout_util.c Sat Jun 20 18:42:23 2009 +0000 @@ -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 diff -r 6600a2754e50 -r 349ebc02b8e2 src/metadata.c --- a/src/metadata.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/metadata.c Sat Jun 20 18:42:23 2009 +0000 @@ -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); } diff -r 6600a2754e50 -r 349ebc02b8e2 src/search.c --- a/src/search.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/search.c Sat Jun 20 18:42:23 2009 +0000 @@ -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) diff -r 6600a2754e50 -r 349ebc02b8e2 src/utilops.c --- a/src/utilops.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/utilops.c Sat Jun 20 18:42:23 2009 +0000 @@ -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: */ diff -r 6600a2754e50 -r 349ebc02b8e2 src/utilops.h --- a/src/utilops.h Sat Jun 20 16:46:32 2009 +0000 +++ b/src/utilops.h Sat Jun 20 18:42:23 2009 +0000 @@ -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); diff -r 6600a2754e50 -r 349ebc02b8e2 src/view_dir.c --- a/src/view_dir.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/view_dir.c Sat Jun 20 18:42:23 2009 +0000 @@ -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; } } diff -r 6600a2754e50 -r 349ebc02b8e2 src/view_file.c --- a/src/view_file.c Sat Jun 20 16:46:32 2009 +0000 +++ b/src/view_file.c Sat Jun 20 18:42:23 2009 +0000 @@ -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);