From 44d67760452254f8e9c67eef9d125f41ddbd5fbe Mon Sep 17 00:00:00 2001 From: William Jon McCann Date: Thu, 27 Sep 2012 20:45:33 +0200 Subject: [PATCH 1/2] Fix leak. http://bugzilla-attachments.gnome.org/attachment.cgi?id=223982 --- src/nemo-places-sidebar.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/nemo-places-sidebar.c b/src/nemo-places-sidebar.c index 5ebb4b66f..60a3b8a86 100644 --- a/src/nemo-places-sidebar.c +++ b/src/nemo-places-sidebar.c @@ -599,6 +599,7 @@ update_places (NemoPlacesSidebar *sidebar) if (!g_file_is_native (root)) { network_mounts = g_list_prepend (network_mounts, mount); + g_object_unref (root); continue; } From 4d09261abcbc4113e7adff5454c8a604db4bbf93 Mon Sep 17 00:00:00 2001 From: Pavel Vasin Date: Thu, 27 Sep 2012 21:59:24 +0200 Subject: [PATCH 2/2] Memory leak fixes Ported patches from https://bugzilla.gnome.org/show_bug.cgi?id=682603 suitable for nemo --- eel/eel-gnome-extensions.c | 1 + eel/eel-gtk-extensions.c | 1 + libnemo-private/nemo-file-operations.c | 7 +++++-- libnemo-private/nemo-file-utilities.c | 16 ++++++++++++++-- libnemo-private/nemo-file.c | 1 + libnemo-private/nemo-query.c | 1 + libnemo-private/nemo-search-directory-file.c | 2 ++ src/nemo-view.c | 5 ++++- 8 files changed, 29 insertions(+), 5 deletions(-) diff --git a/eel/eel-gnome-extensions.c b/eel/eel-gnome-extensions.c index 86b88aa36..cc530617f 100644 --- a/eel/eel-gnome-extensions.c +++ b/eel/eel-gnome-extensions.c @@ -51,6 +51,7 @@ try_terminal_command (const char *program, } quoted = g_shell_quote (program_in_path); + g_free (program_in_path); if (args == NULL || args[0] == '\0') { return quoted; } diff --git a/eel/eel-gtk-extensions.c b/eel/eel-gtk-extensions.c index c647fc338..94db202b1 100644 --- a/eel/eel-gtk-extensions.c +++ b/eel/eel-gtk-extensions.c @@ -360,6 +360,7 @@ tree_view_button_press_callback (GtkWidget *tree_view, NULL)) { gtk_tree_view_row_activated (GTK_TREE_VIEW (tree_view), path, column); + gtk_tree_path_free (path); } } diff --git a/libnemo-private/nemo-file-operations.c b/libnemo-private/nemo-file-operations.c index 73af68de0..935180dbb 100644 --- a/libnemo-private/nemo-file-operations.c +++ b/libnemo-private/nemo-file-operations.c @@ -3789,7 +3789,7 @@ copy_file_progress_callback (goffset current_num_bytes, static gboolean test_dir_is_parent (GFile *child, GFile *root) { - GFile *f; + GFile *f, *tmp; f = g_file_dup (child); while (f) { @@ -3797,7 +3797,9 @@ test_dir_is_parent (GFile *child, GFile *root) g_object_unref (f); return TRUE; } + tmp = f; f = g_file_get_parent (f); + g_object_unref (tmp); } if (f) { g_object_unref (f); @@ -4806,6 +4808,7 @@ move_file_prepare (CopyMoveJob *move_job, if (IS_IO_ERROR (error, INVALID_FILENAME) && !handled_invalid_filename) { + g_error_free (error); handled_invalid_filename = TRUE; g_assert (*dest_fs_type == NULL); @@ -5772,7 +5775,7 @@ nemo_file_operations_copy_move (const GList *item_uris, locations = location_list_from_uri_list (item_uris); - for (p = location_list_from_uri_list (item_uris); p != NULL; p = p->next) { + for (p = locations; p != NULL; p = p->next) { if (!g_file_has_uri_scheme ((GFile* )p->data, "burn")) { have_nonmapping_source = TRUE; } diff --git a/libnemo-private/nemo-file-utilities.c b/libnemo-private/nemo-file-utilities.c index a84d6c50d..16f630a02 100644 --- a/libnemo-private/nemo-file-utilities.c +++ b/libnemo-private/nemo-file-utilities.c @@ -955,13 +955,25 @@ nemo_find_file_insensitive_next (GFile *parent, const gchar *name) return NULL; } +static gboolean +have_program_in_path (const char *name) +{ + char *path; + gboolean result; + + path = g_find_program_in_path (name); + result = (path != NULL); + g_free (path); + return result; +} + gboolean nemo_is_file_roller_installed (void) { static int installed = - 1; if (installed < 0) { - if (g_find_program_in_path ("file-roller")) { + if (have_program_in_path ("file-roller")) { installed = 1; } else { installed = 0; @@ -1168,7 +1180,7 @@ nemo_trashed_files_get_original_directories (GList *files, if (directories == NULL) { directories = g_hash_table_new_full (g_direct_hash, g_direct_equal, (GDestroyNotify) nemo_file_unref, - (GDestroyNotify) nemo_file_list_unref); + (GDestroyNotify) nemo_file_list_free); } nemo_file_ref (original_dir); m = g_hash_table_lookup (directories, original_dir); diff --git a/libnemo-private/nemo-file.c b/libnemo-private/nemo-file.c index 523a23916..d90a5863f 100644 --- a/libnemo-private/nemo-file.c +++ b/libnemo-private/nemo-file.c @@ -813,6 +813,7 @@ finalize (GObject *object) } eel_ref_str_unref (file->details->filesystem_id); + g_free (file->details->trash_orig_path); g_list_free_full (file->details->mime_list, g_free); g_list_free_full (file->details->pending_extension_emblems, g_free); diff --git a/libnemo-private/nemo-query.c b/libnemo-private/nemo-query.c index 9c4f11af8..dc13a8d5b 100644 --- a/libnemo-private/nemo-query.c +++ b/libnemo-private/nemo-query.c @@ -47,6 +47,7 @@ finalize (GObject *object) query = NEMO_QUERY (object); g_free (query->details->text); + g_free (query->details->location_uri); G_OBJECT_CLASS (nemo_query_parent_class)->finalize (object); } diff --git a/libnemo-private/nemo-search-directory-file.c b/libnemo-private/nemo-search-directory-file.c index 1cc5c465b..d82b45688 100644 --- a/libnemo-private/nemo-search-directory-file.c +++ b/libnemo-private/nemo-search-directory-file.c @@ -190,6 +190,8 @@ nemo_search_directory_file_update_display_name (NemoSearchDirectoryFile *search_ if (changed) { nemo_file_emit_changed (file); } + + g_free (display_name); } static void diff --git a/src/nemo-view.c b/src/nemo-view.c index 64b1b8de4..c2ec8d3a8 100644 --- a/src/nemo-view.c +++ b/src/nemo-view.c @@ -1046,6 +1046,8 @@ nemo_view_preview_files (NemoView *view, xid = gdk_x11_window_get_xid (gtk_widget_get_window (toplevel)); nemo_previewer_call_show_file (previewer, uri, xid, TRUE); + + g_free (uri); } void @@ -7806,7 +7808,8 @@ update_restore_from_trash_action (GtkAction *action, g_free (original_name); g_object_set (action, "tooltip", tooltip, NULL); - + g_free (tooltip); + if (original_location != NULL) { g_object_unref (original_location); }