diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c index fad7ff4..c8c4e74 100644 --- a/gtk/gtkicontheme.c +++ b/gtk/gtkicontheme.c @@ -3873,7 +3873,16 @@ 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 frees the second parameter if + the first is NULL. Since we already free load_error + in the finalizer, we should only call propagate error + if the caller expects to receive the error. + OTOH, if we were to free load_error now, it would not + be possible for the caller to request the error later. */ + if (error) + g_propagate_error (error, icon_info->load_error); + } else g_set_error_literal (error, GTK_ICON_THEME_ERROR,