[gthumb] do not free the error inside _gtk_error_dialog_from_gerror_(show|run)



commit 8cf51a7b92333e5222b723ad11b5fecd953102c1
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Jul 17 16:26:41 2011 +0200

    do not free the error inside _gtk_error_dialog_from_gerror_(show|run)
    
    this caused crashes when more callbacks were registered for the "completed"
    signal of a GthTask object.

 extensions/bookmarks/dlg-bookmarks.c               |    3 +-
 extensions/catalogs/actions.c                      |    8 ++--
 extensions/catalogs/dlg-add-to-catalog.c           |    6 +-
 extensions/catalogs/dlg-catalog-properties.c       |    4 +-
 extensions/catalogs/gth-file-source-catalogs.c     |    2 +-
 extensions/contact_sheet/dlg-contact-sheet.c       |   18 +++++---
 extensions/desktop_background/actions.c            |   11 +++--
 extensions/edit_metadata/dlg-edit-metadata.c       |    2 +-
 .../exiv2_tools/gth-metadata-provider-exiv2.c      |    2 +-
 extensions/facebook/dlg-export-to-facebook.c       |   15 +++++--
 extensions/file_manager/actions.c                  |   15 +++++--
 extensions/file_manager/callbacks.c                |    6 ++-
 extensions/find_duplicates/gth-find-duplicates.c   |    2 +-
 extensions/flicker/dlg-export-to-flickr.c          |   18 +++++---
 extensions/flicker/dlg-import-from-flickr.c        |    6 ++-
 extensions/gstreamer_tools/actions.c               |    2 +-
 extensions/image_print/actions.c                   |    9 +++-
 extensions/image_print/gth-image-print-job.c       |    9 +++-
 extensions/image_viewer/gth-image-viewer-page.c    |    2 +-
 extensions/list_tools/dlg-personalize-scripts.c    |    3 +-
 extensions/photo_importer/dlg-photo-importer.c     |    5 +-
 extensions/photobucket/dlg-export-to-photobucket.c |   15 +++++--
 extensions/picasaweb/dlg-export-to-picasaweb.c     |   18 +++++---
 extensions/picasaweb/dlg-import-from-picasaweb.c   |   12 ++++--
 .../picasaweb/picasa-account-properties-dialog.c   |    2 +-
 extensions/rename_series/dlg-rename-series.c       |    6 +-
 extensions/search/actions.c                        |    8 ++-
 extensions/search/gth-search-task.c                |    2 +-
 extensions/webalbums/gth-web-exporter.c            |    3 +-
 gthumb/dlg-personalize-filters.c                   |    3 +-
 gthumb/dlg-preferences-extensions.c                |    6 ++-
 gthumb/gth-browser.c                               |   43 +++++++++----------
 gthumb/gth-file-source-vfs.c                       |    9 +++-
 gthumb/gth-overwrite-dialog.c                      |    2 +-
 gthumb/gth-pixbuf-list-task.c                      |    3 +-
 gthumb/gth-source-tree.c                           |    8 ++-
 gthumb/gtk-utils.c                                 |   20 ++++-----
 gthumb/gtk-utils.h                                 |    4 +-
 38 files changed, 186 insertions(+), 126 deletions(-)
---
diff --git a/extensions/bookmarks/dlg-bookmarks.c b/extensions/bookmarks/dlg-bookmarks.c
index 40e5875..cd914f1 100644
--- a/extensions/bookmarks/dlg-bookmarks.c
+++ b/extensions/bookmarks/dlg-bookmarks.c
@@ -67,7 +67,8 @@ remove_cb (GtkWidget  *widget,
 		
 	bookmarks = gth_main_get_default_bookmarks ();
 	if (! g_bookmark_file_remove_item (bookmarks, uri, &error)) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not remove the bookmark"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not remove the bookmark"), error);
+		g_clear_error (&error);
 	}
 	gth_main_bookmarks_changed ();
 	
diff --git a/extensions/catalogs/actions.c b/extensions/catalogs/actions.c
index a64d6a8..81740aa 100644
--- a/extensions/catalogs/actions.c
+++ b/extensions/catalogs/actions.c
@@ -322,10 +322,10 @@ remove_catalog (GtkWindow   *window,
 		_g_object_list_unref (files);
 		_g_object_unref (parent);
 	}
-	else
-		_gtk_error_dialog_from_gerror_show (window,
-						    _("Could not remove the catalog"),
-						    &error);
+	else {
+		_gtk_error_dialog_from_gerror_show (window, _("Could not remove the catalog"), error);
+		g_clear_error (&error);
+	}
 
 	g_object_unref (gio_file);
 }
diff --git a/extensions/catalogs/dlg-add-to-catalog.c b/extensions/catalogs/dlg-add-to-catalog.c
index ee0279c..9d62eb7 100644
--- a/extensions/catalogs/dlg-add-to-catalog.c
+++ b/extensions/catalogs/dlg-add-to-catalog.c
@@ -102,7 +102,7 @@ catalog_save_done_cb (void     **buffer,
 	AddData *add_data = user_data;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (add_data->parent_window), _("Could not add the files to the catalog"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (add_data->parent_window), _("Could not add the files to the catalog"), error);
 		return;
 	}
 
@@ -133,7 +133,7 @@ catalog_ready_cb (GObject  *catalog,
 	GFile   *gio_file;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (add_data->parent_window), _("Could not add the files to the catalog"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (add_data->parent_window), _("Could not add the files to the catalog"), error);
 		return;
 	}
 
@@ -214,7 +214,7 @@ new_catalog_metadata_ready_cb (GObject  *object,
 	GtkTreePath *tree_path;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not create the catalog"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not create the catalog"), error);
 		return;
 	}
 
diff --git a/extensions/catalogs/dlg-catalog-properties.c b/extensions/catalogs/dlg-catalog-properties.c
index 74cc5d4..61a4c68 100644
--- a/extensions/catalogs/dlg-catalog-properties.c
+++ b/extensions/catalogs/dlg-catalog-properties.c
@@ -77,7 +77,7 @@ catalog_saved_cb (void     **buffer,
 		gth_hook_invoke ("dlg-catalog-properties-saved", data->browser, data->file_data, data->catalog);
 	}
 	else
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not save the catalog"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not save the catalog"), error);
 
 	gtk_widget_destroy (data->dialog);
 }
@@ -163,7 +163,7 @@ catalog_ready_cb (GObject  *object,
 	DialogData *data = user_data;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW(data->browser), _("Could not load the catalog"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW(data->browser), _("Could not load the catalog"), error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
diff --git a/extensions/catalogs/gth-file-source-catalogs.c b/extensions/catalogs/gth-file-source-catalogs.c
index 5ce5006..5155d7c 100644
--- a/extensions/catalogs/gth-file-source-catalogs.c
+++ b/extensions/catalogs/gth-file-source-catalogs.c
@@ -1280,7 +1280,7 @@ remove_from_catalog_end (GError                *error,
 			 RemoveFromCatalogData *data)
 {
 	if (error != NULL)
-		_gtk_error_dialog_from_gerror_show (data->parent, _("Could not remove the files from the catalog"), &error);
+		_gtk_error_dialog_from_gerror_show (data->parent, _("Could not remove the files from the catalog"), error);
 
 	g_object_unref (data->catalog);
 	g_object_unref (data->gio_file);
diff --git a/extensions/contact_sheet/dlg-contact-sheet.c b/extensions/contact_sheet/dlg-contact-sheet.c
index dc261e5..d02546a 100644
--- a/extensions/contact_sheet/dlg-contact-sheet.c
+++ b/extensions/contact_sheet/dlg-contact-sheet.c
@@ -479,8 +479,10 @@ theme_dialog_response_cb (GtkDialog *dialog,
 						     theme->display_name,
 						     ".cst",
 						     &error);
-		if (theme->file == NULL)
-			_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not save the theme"), &error);
+		if (theme->file == NULL) {
+			_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not save the theme"), error);
+			g_clear_error (&error);
+		}
 
 		g_object_unref (themes_dir);
 		g_free (themes_path);
@@ -490,8 +492,9 @@ theme_dialog_response_cb (GtkDialog *dialog,
 	}
 
 	if (! gth_contact_sheet_theme_to_data (theme, &buffer, &buffer_size, &error)) {
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not save the theme"), error);
+		g_clear_error (&error);
 		g_free (buffer);
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not save the theme"), &error);
 		return;
 	}
 
@@ -503,8 +506,9 @@ theme_dialog_response_cb (GtkDialog *dialog,
 			    NULL,
 			    &error))
 	{
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not save the theme"), error);
+		g_clear_error (&error);
 		g_free (buffer);
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not save the theme"), &error);
 		return;
 	}
 
@@ -646,8 +650,10 @@ delete_theme_button_clicked_cb (GtkButton *button,
 	if (theme->file != NULL) {
 		GError *error = NULL;
 
-		if (! g_file_delete (theme->file, NULL, &error))
-			_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not delete the theme"), &error);
+		if (! g_file_delete (theme->file, NULL, &error)) {
+			_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not delete the theme"), error);
+			g_clear_error (&error);
+		}
 	}
 
 	gth_contact_sheet_theme_unref (theme);
diff --git a/extensions/desktop_background/actions.c b/extensions/desktop_background/actions.c
index ea44bb4..3b6297c 100644
--- a/extensions/desktop_background/actions.c
+++ b/extensions/desktop_background/actions.c
@@ -199,8 +199,10 @@ infobar_response_cb (GtkInfoBar *info_bar,
 
 	switch (response_id) {
 	case _RESPONSE_PREFERENCES:
-		if (! g_spawn_command_line_async (DESKTOP_BACKGROUND_PROPERTIES_COMMAND, &error))
-			_gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not show the desktop background properties"), &error);
+		if (! g_spawn_command_line_async (DESKTOP_BACKGROUND_PROPERTIES_COMMAND, &error)) {
+			_gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not show the desktop background properties"), error);
+			g_clear_error (&error);
+		}
 		break;
 
 	case _RESPONSE_UNDO:
@@ -264,7 +266,7 @@ wallpaper_save_ready_cb (GthFileData *a,
 	WallpaperData *wdata = user_data;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), &error);
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), error);
 		wallpaper_data_free (wdata);
 		return;
 	}
@@ -282,7 +284,8 @@ copy_wallpaper_ready_cb (GObject      *source_object,
 	GError        *error = NULL;
 
 	if (! g_file_copy_finish (G_FILE (source_object), res, &error)) {
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), &error);
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (wdata->browser), _("Could not set the desktop background"), error);
+		g_clear_error (&error);
 		wallpaper_data_free (wdata);
 		return;
 	}
diff --git a/extensions/edit_metadata/dlg-edit-metadata.c b/extensions/edit_metadata/dlg-edit-metadata.c
index b3e7210..20be7cc 100644
--- a/extensions/edit_metadata/dlg-edit-metadata.c
+++ b/extensions/edit_metadata/dlg-edit-metadata.c
@@ -112,7 +112,7 @@ load_file_data_task_completed_cb (GthTask  *task,
 	DialogData *data = user_data;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Cannot read file information"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Cannot read file information"), error);
 		gtk_widget_destroy (GTK_WIDGET (data->dialog));
 		return;
 	}
diff --git a/extensions/exiv2_tools/gth-metadata-provider-exiv2.c b/extensions/exiv2_tools/gth-metadata-provider-exiv2.c
index 8106af8..f000e1c 100644
--- a/extensions/exiv2_tools/gth-metadata-provider-exiv2.c
+++ b/extensions/exiv2_tools/gth-metadata-provider-exiv2.c
@@ -123,7 +123,7 @@ gth_metadata_provider_exiv2_write (GthMetadataProvider   *self,
 	if (! exiv2_supports_writes (gth_file_data_get_mime_type (file_data)))
 		return;
 
-	if (! g_load_file_in_buffer (file_data->file, &buffer, &size, NULL, &error))
+	if (! g_load_file_in_buffer (file_data->file, &buffer, &size, cancellable, &error))
 		return;
 
 	metadata = g_file_info_get_attribute_object (file_data->info, "general::description");
diff --git a/extensions/facebook/dlg-export-to-facebook.c b/extensions/facebook/dlg-export-to-facebook.c
index 7807e93..1c31e73 100644
--- a/extensions/facebook/dlg-export-to-facebook.c
+++ b/extensions/facebook/dlg-export-to-facebook.c
@@ -118,7 +118,8 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 			if ((url != NULL) && ! gtk_show_uri (screen, url, 0, &error)) {
 				if (data->conn != NULL)
 					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+				g_clear_error (&error);
 			}
 
 			gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
@@ -169,7 +170,8 @@ upload_photos_ready_cb (GObject      *source_object,
 
 	data->photos_ids = facebook_service_upload_photos_finish (FACEBOOK_SERVICE (source_object), result, &error);
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
 	}
@@ -309,7 +311,8 @@ get_albums_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
 	}
@@ -385,7 +388,8 @@ create_album_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), error);
+		g_clear_error (&error);
 		return;
 	}
 
@@ -533,7 +537,8 @@ dlg_export_to_facebook (GthBrowser *browser,
 		GError *error;
 
 		error = g_error_new_literal (GTH_ERROR, GTH_ERROR_GENERIC, _("No valid file selected."));
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 
 		return;
diff --git a/extensions/file_manager/actions.c b/extensions/file_manager/actions.c
index 06a907b..09746ef 100644
--- a/extensions/file_manager/actions.c
+++ b/extensions/file_manager/actions.c
@@ -552,7 +552,8 @@ gth_browser_activate_action_folder_open_in_file_manager (GtkAction  *action,
                             gtk_get_current_event_time (),
                             &error))
 	{
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser), _("Could not open the location"), &error);
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser), _("Could not open the location"), error);
+		g_clear_error (&error);
 	}
 
 	g_free (uri);
@@ -699,8 +700,10 @@ delete_folder_permanently (GtkWindow        *window,
 
 			gtk_widget_destroy (d);
 		}
-		else
-			_gtk_error_dialog_from_gerror_show (window, _("Could not delete the folder"), &error);
+		else {
+			_gtk_error_dialog_from_gerror_show (window, _("Could not delete the folder"), error);
+			g_clear_error (&error);
+		}
 	}
 	else {
 		GFile *parent;
@@ -765,8 +768,10 @@ gth_browser_activate_action_folder_trash (GtkAction  *action,
 			g_signal_connect (d, "response", G_CALLBACK (delete_folder_permanently_response_cb), delete_data);
 			gtk_widget_show (d);
 		}
-		else
-			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not move the folder to the Trash"), &error);
+		else {
+			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not move the folder to the Trash"), error);
+			g_clear_error (&error);
+		}
 	}
 	else {
 		GFile *parent;
diff --git a/extensions/file_manager/callbacks.c b/extensions/file_manager/callbacks.c
index 7150e1e..b6728e3 100644
--- a/extensions/file_manager/callbacks.c
+++ b/extensions/file_manager/callbacks.c
@@ -924,10 +924,12 @@ activate_open_with_application_item (GtkMenuItem *menuitem,
 	gdk_app_launch_context_set_screen (context, gtk_widget_get_screen (GTK_WIDGET (browser)));
 	gdk_app_launch_context_set_timestamp (context, 0);
 	gdk_app_launch_context_set_icon (context, g_app_info_get_icon (appinfo));
-	if (! g_app_info_launch_uris (appinfo, uris, G_APP_LAUNCH_CONTEXT (context), &error))
+	if (! g_app_info_launch_uris (appinfo, uris, G_APP_LAUNCH_CONTEXT (context), &error)) {
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser),
 						    _("Could not perform the operation"),
-						    &error);
+						    error);
+		g_clear_error (&error);
+	}
 
 	g_object_unref (context);
 	g_list_free (uris);
diff --git a/extensions/find_duplicates/gth-find-duplicates.c b/extensions/find_duplicates/gth-find-duplicates.c
index 4e78c68..7666d80 100644
--- a/extensions/find_duplicates/gth-find-duplicates.c
+++ b/extensions/find_duplicates/gth-find-duplicates.c
@@ -607,7 +607,7 @@ done_func (GObject  *object,
 	self->priv->io_operation = FALSE;
 
 	if ((error != NULL) && ! g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not perform the operation"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not perform the operation"), error);
 		gtk_widget_destroy (GET_WIDGET ("find_duplicates_dialog"));
 		return;
 	}
diff --git a/extensions/flicker/dlg-export-to-flickr.c b/extensions/flicker/dlg-export-to-flickr.c
index c68e182..6dafc0b 100644
--- a/extensions/flicker/dlg-export-to-flickr.c
+++ b/extensions/flicker/dlg-export-to-flickr.c
@@ -134,7 +134,8 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 			if ((url != NULL) && ! gtk_show_uri (screen, url, 0, &error)) {
 				if (data->conn != NULL)
 					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+				g_clear_error (&error);
 			}
 			gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 
@@ -183,7 +184,8 @@ add_photos_to_photoset_ready_cb (GObject      *source_object,
 	GError     *error = NULL;
 
 	if (! flickr_service_add_photos_to_set_finish (FLICKR_SERVICE (source_object), result, &error)) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
 	}
@@ -217,7 +219,8 @@ create_photoset_ready_cb (GObject      *source_object,
 	g_object_unref (data->photoset);
 	data->photoset = flickr_service_create_photoset_finish (FLICKR_SERVICE (source_object), result, &error);
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 	}
 	else {
@@ -239,7 +242,8 @@ post_photos_ready_cb (GObject      *source_object,
 
 	data->photos_ids = flickr_service_post_photos_finish (FLICKR_SERVICE (source_object), result, &error);
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
 	}
@@ -392,7 +396,8 @@ photoset_list_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
 	}
@@ -519,7 +524,8 @@ dlg_export_to_flickr (FlickrServer *server,
 		GError *error;
 
 		error = g_error_new_literal (GTH_ERROR, GTH_ERROR_GENERIC, _("No valid file selected."));
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 
 		return;
diff --git a/extensions/flicker/dlg-import-from-flickr.c b/extensions/flicker/dlg-import-from-flickr.c
index c0f0915..1f68a9f 100644
--- a/extensions/flicker/dlg-import-from-flickr.c
+++ b/extensions/flicker/dlg-import-from-flickr.c
@@ -231,7 +231,8 @@ photoset_list_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+		g_clear_error (&error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
@@ -353,7 +354,8 @@ list_photos_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the photo list"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the photo list"), error);
+		g_clear_error (&error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
diff --git a/extensions/gstreamer_tools/actions.c b/extensions/gstreamer_tools/actions.c
index f70c684..e15e1e8 100644
--- a/extensions/gstreamer_tools/actions.c
+++ b/extensions/gstreamer_tools/actions.c
@@ -61,7 +61,7 @@ screenshot_saved_cb (GthFileData *file_data,
 	GthMediaViewerPage *page = save_data->page;
 
 	if (error != NULL)
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (save_data->browser), _("Could not save the file"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (save_data->browser), _("Could not save the file"), error);
 	else if (save_data->playing_before_screenshot)
 		gst_element_set_state (gth_media_viewer_page_get_playbin (page), GST_STATE_PLAYING);
 
diff --git a/extensions/image_print/actions.c b/extensions/image_print/actions.c
index 4a56017..67f2b3d 100644
--- a/extensions/image_print/actions.c
+++ b/extensions/image_print/actions.c
@@ -60,12 +60,15 @@ gth_browser_activate_action_file_print (GtkAction  *action,
 						     &error);
 		_g_object_unref (current_image);
 
-		if (print_job != NULL)
+		if (print_job != NULL) {
 			gth_image_print_job_run (print_job,
 						 GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
 						 browser);
-		else
-			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not print the selected files"), &error);
+		}
+		else {
+			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not print the selected files"), error);
+			g_clear_error (&error);
+		}
 	}
 
 	_g_object_list_unref (file_list);
diff --git a/extensions/image_print/gth-image-print-job.c b/extensions/image_print/gth-image-print-job.c
index 192305f..b44838f 100644
--- a/extensions/image_print/gth-image-print-job.c
+++ b/extensions/image_print/gth-image-print-job.c
@@ -1758,7 +1758,8 @@ print_operation_done_cb (GtkPrintOperation       *operation,
 		GError *error = NULL;
 
 		gtk_print_operation_get_error (self->priv->print_operation, &error);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not print"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not print"), error);
+		g_clear_error (&error);
 		return;
 	}
 	else if (result == GTK_PRINT_OPERATION_RESULT_APPLY) {
@@ -1920,8 +1921,10 @@ load_image_info_task_completed_cb (GthTask  *task,
 					  self->priv->action,
 					  GTK_WINDOW (self->priv->browser),
 					  &error);
-	if (result == GTK_PRINT_OPERATION_RESULT_ERROR)
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not print"), &error);
+	if (result == GTK_PRINT_OPERATION_RESULT_ERROR) {
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not print"), error);
+		g_clear_error (&error);
+	}
 
 	_g_object_unref (settings);
 }
diff --git a/extensions/image_viewer/gth-image-viewer-page.c b/extensions/image_viewer/gth-image-viewer-page.c
index 8f811bb..d8e78c4 100644
--- a/extensions/image_viewer/gth-image-viewer-page.c
+++ b/extensions/image_viewer/gth-image-viewer-page.c
@@ -1118,7 +1118,7 @@ image_saved_cb (GthFileData *file_data,
 	if (data->func != NULL)
 		(data->func) ((GthViewerPage *) self, self->priv->file_data, error, data->user_data);
 	else if (error != NULL)
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not save the file"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not save the file"), error);
 
 	if (! error_occurred) {
 		GFile *folder;
diff --git a/extensions/list_tools/dlg-personalize-scripts.c b/extensions/list_tools/dlg-personalize-scripts.c
index 8805a7b..e98689c 100644
--- a/extensions/list_tools/dlg-personalize-scripts.c
+++ b/extensions/list_tools/dlg-personalize-scripts.c
@@ -352,7 +352,8 @@ script_editor_dialog__response_cb (GtkDialog *dialog,
 
 	script = gth_script_editor_dialog_get_script (GTH_SCRIPT_EDITOR_DIALOG (dialog), &error);
 	if (script == NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not save the script"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not save the script"), error);
+		g_clear_error (&error);
 		return;
 	}
 
diff --git a/extensions/photo_importer/dlg-photo-importer.c b/extensions/photo_importer/dlg-photo-importer.c
index c186a8b..5fc8f08 100644
--- a/extensions/photo_importer/dlg-photo-importer.c
+++ b/extensions/photo_importer/dlg-photo-importer.c
@@ -212,7 +212,8 @@ ok_clicked_cb (GtkWidget  *widget,
 	if (! gth_import_task_check_free_space (destination, file_list, &error)) {
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog),
 						    _("Could not import the files"),
-						    &error);
+						    error);
+		g_clear_error (&error);
 		import = FALSE;
 	}
 	else
@@ -318,7 +319,7 @@ list_ready_cb (GList    *files,
 		gth_file_list_cancel (GTH_FILE_LIST (data->file_list), cancel_done, data);
 	}
 	else if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not load the folder"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not load the folder"), error);
 	}
 	else {
 		_g_object_unref (data->last_source);
diff --git a/extensions/photobucket/dlg-export-to-photobucket.c b/extensions/photobucket/dlg-export-to-photobucket.c
index 76c58b7..323e3ef 100644
--- a/extensions/photobucket/dlg-export-to-photobucket.c
+++ b/extensions/photobucket/dlg-export-to-photobucket.c
@@ -128,7 +128,8 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 			if ((url != NULL) && ! gtk_show_uri (screen, url, 0, &error)) {
 				if (data->conn != NULL)
 					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+				g_clear_error (&error);
 			}
 
 			gtk_widget_destroy (data->dialog);
@@ -178,7 +179,8 @@ upload_photos_ready_cb (GObject      *source_object,
 	GError     *error = NULL;
 
 	if (! photobucket_service_upload_photos_finish (data->service, result, &error)) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), error);
+		g_clear_error (&error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
@@ -371,7 +373,8 @@ album_list_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+		_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+		g_clear_error (&error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
@@ -456,7 +459,8 @@ create_album_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), error);
+		g_clear_error (&error);
 		return;
 	}
 
@@ -608,7 +612,8 @@ dlg_export_to_photobucket (GthBrowser *browser,
 		GError *error;
 
 		error = g_error_new_literal (GTH_ERROR, GTH_ERROR_GENERIC, _("No valid file selected."));
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), error);
+		g_clear_error (&error);
 		gtk_widget_destroy (data->dialog);
 
 		return;
diff --git a/extensions/picasaweb/dlg-export-to-picasaweb.c b/extensions/picasaweb/dlg-export-to-picasaweb.c
index d1960c9..5b1c454 100644
--- a/extensions/picasaweb/dlg-export-to-picasaweb.c
+++ b/extensions/picasaweb/dlg-export-to-picasaweb.c
@@ -136,7 +136,8 @@ completed_messagedialog_response_cb (GtkDialog *dialog,
 			if ((url != NULL) && ! gtk_show_uri (screen, url, 0, &error)) {
 				if (data->conn != NULL)
 					gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+				g_clear_error (&error);
 			}
 			gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 
@@ -188,7 +189,8 @@ post_photos_ready_cb (GObject      *source_object,
 	if (! picasa_web_service_post_photos_finish (picasaweb, result, &error)) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), error);
+		g_clear_error (&error);
 		return;
 	}
 
@@ -349,7 +351,8 @@ list_albums_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the album list"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the album list"), error);
+		g_clear_error (&error);
 		gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		return;
 	}
@@ -418,7 +421,8 @@ connection_ready_cb (GObject      *source_object,
 		else {
 			if (data->conn != NULL)
 				gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+			g_clear_error (&error);
 			gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT);
 		}
 		return;
@@ -710,7 +714,8 @@ create_album_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), error);
+		g_clear_error (&error);
 		return;
 	}
 
@@ -995,7 +1000,8 @@ dlg_export_to_picasaweb (GthBrowser *browser,
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
 
 		error = g_error_new_literal (GTH_ERROR, GTH_ERROR_GENERIC, _("No valid file selected."));
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not export the files"), error);
+		g_clear_error (&error);
 		destroy_dialog (data);
 		return;
 	}
diff --git a/extensions/picasaweb/dlg-import-from-picasaweb.c b/extensions/picasaweb/dlg-import-from-picasaweb.c
index 410a37f..39b18f1 100644
--- a/extensions/picasaweb/dlg-import-from-picasaweb.c
+++ b/extensions/picasaweb/dlg-import-from-picasaweb.c
@@ -171,7 +171,8 @@ import_dialog_response_cb (GtkDialog *dialog,
 				if (! gth_import_task_check_free_space (destination, file_list, &error)) {
 					_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog),
 									    _("Could not import the files"),
-									    &error);
+									    error);
+					g_clear_error (&error);
 					_g_object_unref (destination);
 					_g_object_list_unref (file_list);
 					g_object_unref (album);
@@ -303,7 +304,8 @@ list_albums_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the album list"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the album list"), error);
+		g_clear_error (&error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
@@ -372,7 +374,8 @@ connection_ready_cb (GObject      *source_object,
 		else {
 			if (data->conn != NULL)
 				gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not connect to the server"), &error);
+			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not connect to the server"), error);
+			g_clear_error (&error);
 			gtk_widget_destroy (data->dialog);
 		}
 		return;
@@ -821,7 +824,8 @@ list_photos_ready_cb (GObject      *source_object,
 	if (error != NULL) {
 		if (data->conn != NULL)
 			gth_task_dialog (GTH_TASK (data->conn), TRUE, NULL);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the photo list"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not get the photo list"), error);
+		g_clear_error (&error);
 		gtk_widget_destroy (data->dialog);
 		return;
 	}
diff --git a/extensions/picasaweb/picasa-account-properties-dialog.c b/extensions/picasaweb/picasa-account-properties-dialog.c
index 5de85a3..b7588e3 100644
--- a/extensions/picasaweb/picasa-account-properties-dialog.c
+++ b/extensions/picasaweb/picasa-account-properties-dialog.c
@@ -130,7 +130,7 @@ image_buffer_ready_cb (void     **buffer,
 	GdkPixbuf                  *pixbuf;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self), _("Could not load the file"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self), _("Could not load the file"), error);
 		return;
 	}
 
diff --git a/extensions/rename_series/dlg-rename-series.c b/extensions/rename_series/dlg-rename-series.c
index eb4ee38..96aef1f 100644
--- a/extensions/rename_series/dlg-rename-series.c
+++ b/extensions/rename_series/dlg-rename-series.c
@@ -553,8 +553,7 @@ ok_button_clicked__step2 (GError   *error,
 	GthTask     *task;
 
 	if (error != NULL) {
-		GError *new_error = g_error_copy (error);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not rename the files"), &new_error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->dialog), _("Could not rename the files"), error);
 		return;
 	}
 
@@ -782,7 +781,8 @@ template_editor_dialog_response_cb (GtkDialog *dialog,
 
 	template = gth_template_editor_dialog_get_template (GTH_TEMPLATE_EDITOR_DIALOG (dialog), &error);
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not save the template"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not save the template"), error);
+		g_clear_error (&error);
 		return;
 	}
 
diff --git a/extensions/search/actions.c b/extensions/search/actions.c
index f6493a0..c57c8c9 100644
--- a/extensions/search/actions.c
+++ b/extensions/search/actions.c
@@ -46,7 +46,8 @@ search_editor_dialog__response_cb (GtkDialog *dialog,
 
 	search = gth_search_editor_dialog_get_search (GTH_SEARCH_EDITOR_DIALOG (dialog), &error);
 	if (search == NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not perform the search"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not perform the search"), error);
+		g_clear_error (&error);
 		return;
 	}
 
@@ -113,13 +114,14 @@ search_update_buffer_ready_cb (void     **buffer,
 	GthTask    *task;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (search_data->browser), _("Could not perform the search"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (search_data->browser), _("Could not perform the search"), error);
 		return;
 	}
 
 	search = gth_search_new_from_data (*buffer, count, &local_error);
 	if (search == NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (search_data->browser), _("Could not perform the search"), &local_error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (search_data->browser), _("Could not perform the search"), local_error);
+		g_clear_error (&local_error);
 		return;
 	}
 
diff --git a/extensions/search/gth-search-task.c b/extensions/search/gth-search-task.c
index f64e9ac..af693e1 100644
--- a/extensions/search/gth-search-task.c
+++ b/extensions/search/gth-search-task.c
@@ -349,7 +349,7 @@ clear_search_result_copy_done_cb (void     **buffer,
 	task->priv->io_operation = FALSE;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (task->priv->browser), _("Could not create the catalog"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (task->priv->browser), _("Could not create the catalog"), error);
 		return;
 	}
 
diff --git a/extensions/webalbums/gth-web-exporter.c b/extensions/webalbums/gth-web-exporter.c
index 642e0db..999decc 100644
--- a/extensions/webalbums/gth-web-exporter.c
+++ b/extensions/webalbums/gth-web-exporter.c
@@ -1809,7 +1809,8 @@ success_dialog_response_cb (GtkDialog *dialog,
 			url = g_file_get_uri (file);
 			if ((url != NULL) && ! gtk_show_uri (screen, url, 0, &error)) {
 				gth_task_dialog (GTH_TASK (self), TRUE, NULL);
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (self->priv->browser), _("Could not show the destination"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (self->priv->browser), _("Could not show the destination"), error);
+				g_clear_error (&error);
 			}
 
 			g_free (url);
diff --git a/gthumb/dlg-personalize-filters.c b/gthumb/dlg-personalize-filters.c
index 023e7f0..14713c2 100644
--- a/gthumb/dlg-personalize-filters.c
+++ b/gthumb/dlg-personalize-filters.c
@@ -311,7 +311,8 @@ filter_editor_dialog__response_cb (GtkDialog *dialog,
 
 	filter = gth_filter_editor_dialog_get_filter (GTH_FILTER_EDITOR_DIALOG (dialog), &error);
 	if (filter == NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not save the filter"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (dialog), _("Could not save the filter"), error);
+		g_clear_error (&error);
 		return;
 	}
 
diff --git a/gthumb/dlg-preferences-extensions.c b/gthumb/dlg-preferences-extensions.c
index 2df17cd..f080682 100644
--- a/gthumb/dlg-preferences-extensions.c
+++ b/gthumb/dlg-preferences-extensions.c
@@ -212,7 +212,8 @@ cell_renderer_toggle_toggled_cb (GtkCellRendererToggle *cell_renderer,
 		gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (data->model_filter), &child_iter, &iter);
 		if (! gth_extension_description_is_active (description)) {
 			if (! gth_extension_manager_activate (gth_main_get_default_extension_manager (), description->id, &error)) {
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not activate the extension"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not activate the extension"), error);
+				g_clear_error (&error);
 			}
 			else {
 				gtk_list_store_set (data->list_store, &child_iter, 0, description, -1);
@@ -221,7 +222,8 @@ cell_renderer_toggle_toggled_cb (GtkCellRendererToggle *cell_renderer,
 		}
 		else {
 			if (! gth_extension_manager_deactivate (gth_main_get_default_extension_manager (), description->id, &error)) {
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not deactivate the extension"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->dialog), _("Could not deactivate the extension"), error);
+				g_clear_error (&error);
 			}
 			else {
 				gtk_list_store_set (data->list_store, &child_iter, 0, description, -1);
diff --git a/gthumb/gth-browser.c b/gthumb/gth-browser.c
index a2c7940..d55f713 100644
--- a/gthumb/gth-browser.c
+++ b/gthumb/gth-browser.c
@@ -1168,7 +1168,8 @@ load_data_done (LoadData *load_data,
 
 	gth_browser_update_sensitivity (browser);
 	title = file_format (_("Could not load the position \"%s\""), load_data->requested_folder->file);
-	_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, &error);
+	_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, error);
+	g_error_free (error);
 
 	g_free (title);
 }
@@ -1740,7 +1741,8 @@ mount_volume_ready_cb (GObject      *source_object,
 		char *title;
 
 		title = file_format (_("Could not load the position \"%s\""), load_data->requested_folder->file);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (load_data->browser), title, &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (load_data->browser), title, error);
+		g_clear_error (&error);
 
 		g_free (title);
 		load_data_free (load_data);
@@ -1937,7 +1939,7 @@ ask_whether_to_save__file_saved_cb (GthViewerPage *viewer_page,
 
 	error_occurred = error != NULL;
 	if (error != NULL)
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not save the file"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not save the file"), error);
 	ask_whether_to_save__done (data, error_occurred);
 }
 
@@ -2787,10 +2789,8 @@ file_source_rename_ready_cb (GObject  *object,
 
 	g_object_unref (object);
 
-	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not change name"), &error);
-		return;
-	}
+	if (error != NULL)
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not change name"), error);
 }
 
 
@@ -2809,8 +2809,10 @@ folder_tree_rename_cb (GthFolderTree *folder_tree,
 	uri = g_file_get_uri (file);
 	new_file = g_file_get_child_for_display_name (parent, new_name, &error);
 
-	if (new_file == NULL)
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not change name"), &error);
+	if (new_file == NULL) {
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not change name"), error);
+		g_clear_error (&error);
+	}
 	else {
 		GthFileSource *file_source;
 
@@ -4867,10 +4869,8 @@ background_task_completed_cb (GthTask  *task,
 	if (error == NULL)
 		return;
 
-	if (! g_error_matches (error, GTH_TASK_ERROR, GTH_TASK_ERROR_CANCELLED) && ! g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
-		GError *local_error = g_error_copy (error);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not perform the operation"), &local_error);
-	}
+	if (! g_error_matches (error, GTH_TASK_ERROR, GTH_TASK_ERROR_CANCELLED) && ! g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not perform the operation"), error);
 }
 
 
@@ -4903,12 +4903,8 @@ foreground_task_completed_cb (GthTask    *task,
 
 	gth_statusbar_set_progress (GTH_STATUSBAR (browser->priv->statusbar), NULL, FALSE, 0.0);
 	gth_browser_update_sensitivity (browser);
-	if (error != NULL) {
-		if (! g_error_matches (error, GTH_TASK_ERROR, GTH_TASK_ERROR_CANCELLED)) {
-			GError *local_error = g_error_copy (error);
-			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not perform the operation"), &local_error);
-		}
-	}
+	if ((error != NULL) && ! g_error_matches (error, GTH_TASK_ERROR, GTH_TASK_ERROR_CANCELLED))
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), _("Could not perform the operation"), error);
 
 	g_object_unref (browser->priv->task);
 	browser->priv->task = NULL;
@@ -5726,7 +5722,8 @@ load_file_attributes_ready_cb (GthFileSource *file_source,
 
 			title =  file_format (_("Could not load the position \"%s\""), data->location);
 			error = g_error_new (GTH_ERROR, 0, _("File type not supported"));
-			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, &error);
+			_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, error);
+			g_clear_error (&error);
 
 			g_free (title);
 		}
@@ -5734,7 +5731,6 @@ load_file_attributes_ready_cb (GthFileSource *file_source,
 	else if (browser->priv->history == NULL) {
 		GFile *home;
 
-		g_clear_error (&error);
 		home = g_file_new_for_uri (get_home_uri ());
 		gth_browser_load_location (browser, home);
 
@@ -5744,7 +5740,7 @@ load_file_attributes_ready_cb (GthFileSource *file_source,
 		char *title;
 
 		title =  file_format (_("Could not load the position \"%s\""), data->location);
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, error);
 
 		g_free (title);
 	}
@@ -5770,7 +5766,8 @@ gth_browser_load_location (GthBrowser *browser,
 
 		title =  file_format (_("Could not load the position \"%s\""), data->location);
 		error = g_error_new (GTH_ERROR, 0, _("No suitable module found"));
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser), title, error);
+		g_clear_error (&error);
 
 		g_free (title);
 	}
diff --git a/gthumb/gth-file-source-vfs.c b/gthumb/gth-file-source-vfs.c
index 892df6e..0cdf3af 100644
--- a/gthumb/gth-file-source-vfs.c
+++ b/gthumb/gth-file-source-vfs.c
@@ -681,8 +681,10 @@ delete_file_permanently (GtkWindow *window,
 	GError *error = NULL;
 
 	files = gth_file_data_list_to_file_list (file_list);
-	if (! _g_delete_files (files, TRUE, &error))
-		_gtk_error_dialog_from_gerror_show (window, _("Could not delete the files"), &error);
+	if (! _g_delete_files (files, TRUE, &error)) {
+		_gtk_error_dialog_from_gerror_show (window, _("Could not delete the files"), error);
+		g_clear_error (&error);
+	}
 	else
 		notify_files_delete (window, files);
 
@@ -736,7 +738,8 @@ trash_files (GtkWindow *window,
 
 				break;
 			}
-			_gtk_error_dialog_from_gerror_show (window, _("Could not move the files to the Trash"), &error);
+			_gtk_error_dialog_from_gerror_show (window, _("Could not move the files to the Trash"), error);
+			g_clear_error (&error);
 			break;
 		}
 	}
diff --git a/gthumb/gth-overwrite-dialog.c b/gthumb/gth-overwrite-dialog.c
index 351dbfd..5be5b64 100644
--- a/gthumb/gth-overwrite-dialog.c
+++ b/gthumb/gth-overwrite-dialog.c
@@ -163,7 +163,7 @@ info_ready_cb (GList    *files,
 	GdkPixbuf          *pixbuf;
 
 	if (error != NULL) {
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self), _("Cannot read file information"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self), _("Cannot read file information"), error);
 		return;
 	}
 
diff --git a/gthumb/gth-pixbuf-list-task.c b/gthumb/gth-pixbuf-list-task.c
index ae7721b..d14be9c 100644
--- a/gthumb/gth-pixbuf-list-task.c
+++ b/gthumb/gth-pixbuf-list-task.c
@@ -136,7 +136,8 @@ overwrite_dialog_response_cb (GtkDialog *dialog,
 
 			new_destination = g_file_get_child_for_display_name (parent, gth_overwrite_dialog_get_filename (GTH_OVERWRITE_DIALOG (dialog)), &error);
 			if (new_destination == NULL) {
-				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (dialog), _("Could not rename the file"), &error);
+				_gtk_error_dialog_from_gerror_run (GTK_WINDOW (dialog), _("Could not rename the file"), error);
+				g_clear_error (&error);
 				gtk_widget_show (GTK_WIDGET (dialog));
 				gth_task_dialog (GTH_TASK (self), TRUE, GTK_WIDGET (dialog));
 				close_overwrite_dialog = FALSE;
diff --git a/gthumb/gth-source-tree.c b/gthumb/gth-source-tree.c
index 76e1941..35c059c 100644
--- a/gthumb/gth-source-tree.c
+++ b/gthumb/gth-source-tree.c
@@ -175,7 +175,7 @@ file_source_rename_ready_cb (GObject  *object,
 	GthSourceTree *source_tree = user_data;
 
 	if (error != NULL)
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (source_tree))), _("Could not change name"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (source_tree))), _("Could not change name"), error);
 }
 
 
@@ -196,8 +196,10 @@ source_tree_rename_cb (GthFolderTree *folder_tree,
 	new_basename = g_strconcat (new_name, _g_uri_get_file_extension (uri), NULL);
 	new_file = g_file_get_child_for_display_name (parent, new_basename, &error);
 
-	if (new_file == NULL)
-		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (source_tree))), _("Could not change name"), &error);
+	if (new_file == NULL) {
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (source_tree))), _("Could not change name"), error);
+		g_clear_error (&error);
+	}
 	else
 		gth_file_source_rename (source_tree->priv->file_source, file, new_file, file_source_rename_ready_cb, source_tree);
 
diff --git a/gthumb/gtk-utils.c b/gthumb/gtk-utils.c
index b25f1e6..58047f2 100644
--- a/gthumb/gtk-utils.c
+++ b/gthumb/gtk-utils.c
@@ -431,23 +431,22 @@ _gtk_message_dialog_with_checkbutton_new (GtkWindow        *parent,
 void
 _gtk_error_dialog_from_gerror_run (GtkWindow   *parent,
 				   const char  *title,
-				   GError     **gerror)
+				   GError      *gerror)
 {
 	GtkWidget *d;
 
-	g_return_if_fail (*gerror != NULL);
+	g_return_if_fail (gerror != NULL);
 
 	d = _gtk_message_dialog_new (parent,
 				     GTK_DIALOG_DESTROY_WITH_PARENT,
 				     GTK_STOCK_DIALOG_ERROR,
 				     title,
-				     (*gerror)->message,
+				     gerror->message,
 				     GTK_STOCK_OK, GTK_RESPONSE_OK,
 				     NULL);
 	gtk_dialog_run (GTK_DIALOG (d));
 
 	gtk_widget_destroy (d);
-	g_clear_error (gerror);
 }
 
 
@@ -463,7 +462,7 @@ error_dialog_response_cb (GtkDialog *dialog,
 void
 _gtk_error_dialog_from_gerror_show (GtkWindow   *parent,
 				    const char  *title,
-				    GError     **gerror)
+				    GError      *gerror)
 {
 	GtkWidget *d;
 
@@ -471,15 +470,12 @@ _gtk_error_dialog_from_gerror_show (GtkWindow   *parent,
 				     GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
 				     GTK_STOCK_DIALOG_ERROR,
 				     title,
-				     (gerror != NULL) ? (*gerror)->message : NULL,
+				     (gerror != NULL) ? gerror->message : NULL,
 				     GTK_STOCK_OK, GTK_RESPONSE_OK,
 				     NULL);
 	g_signal_connect (d, "response", G_CALLBACK (error_dialog_response_cb), NULL);
 
 	gtk_window_present (GTK_WINDOW (d));
-
-	if (gerror != NULL)
-		g_clear_error (gerror);
 }
 
 
@@ -992,7 +988,8 @@ _g_launch_command (GtkWidget  *parent,
 
 	app_info = g_app_info_create_from_commandline (command, name, G_APP_INFO_CREATE_SUPPORTS_URIS, &error);
 	if (app_info == NULL) {
-		_gtk_error_dialog_from_gerror_show(GTK_WINDOW (parent), _("Could not launch the application"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (parent), _("Could not launch the application"), error);
+		g_clear_error (&error);
 		return;
 	}
 
@@ -1000,7 +997,8 @@ _g_launch_command (GtkWidget  *parent,
 	gdk_app_launch_context_set_screen (launch_context, gtk_widget_get_screen (parent));
 
 	if (! g_app_info_launch (app_info, files, G_APP_LAUNCH_CONTEXT (launch_context), &error)) {
-		_gtk_error_dialog_from_gerror_show(GTK_WINDOW (parent), _("Could not launch the application"), &error);
+		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (parent), _("Could not launch the application"), error);
+		g_clear_error (&error);
 		return;
 	}
 
diff --git a/gthumb/gtk-utils.h b/gthumb/gtk-utils.h
index 9d67055..97624a4 100644
--- a/gthumb/gtk-utils.h
+++ b/gthumb/gtk-utils.h
@@ -63,11 +63,11 @@ _gtk_yesno_dialog_with_checkbutton_new     (GtkWindow        *parent,
 void
 _gtk_error_dialog_from_gerror_run          (GtkWindow        *parent,
 					    const char       *title,
-					    GError          **gerror);
+					    GError           *gerror);
 void
 _gtk_error_dialog_from_gerror_show         (GtkWindow        *parent,
 					    const char       *title,
-					    GError          **gerror);
+					    GError           *gerror);
 void        _gtk_error_dialog_run          (GtkWindow        *parent,
 					    const gchar      *format,
 					    ...) G_GNUC_PRINTF (2, 3);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]