diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index fad7ff4..0683d3c 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -3873,7 +3873,13 @@ gtk_icon_info_load_icon (GtkIconInfo *icon_info,
   if (!icon_info_ensure_scale_and_pixbuf (icon_info, FALSE))
     {
       if (icon_info->load_error)
-        g_propagate_error (error, icon_info->load_error);
+        {
+          /* g_propagate_error would be wrong here as
+             icon_info->load_error gets freed in the
+             finalizer. */
+          if (error)
+            *error = g_error_copy(icon_info->load_error);
+        }
       else
         g_set_error_literal (error,  
                              GTK_ICON_THEME_ERROR,  
