mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-17 06:10:15 +00:00
infobar: Avoid a memory leak in an error case
Parsing <action-widgets> could sometimes fail to free some of the data, if a nonexisting widget is referenced. Found by gcc's leak sanitizer.
This commit is contained in:
parent
c784d5d700
commit
88e372cd09
@ -915,6 +915,15 @@ typedef struct
|
|||||||
gint col;
|
gint col;
|
||||||
} SubParserData;
|
} SubParserData;
|
||||||
|
|
||||||
|
static void
|
||||||
|
action_widget_info_free (gpointer data)
|
||||||
|
{
|
||||||
|
ActionWidgetInfo *item = data;
|
||||||
|
|
||||||
|
g_free (item->name);
|
||||||
|
g_free (item);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
parser_start_element (GMarkupParseContext *context,
|
parser_start_element (GMarkupParseContext *context,
|
||||||
const gchar *element_name,
|
const gchar *element_name,
|
||||||
@ -1096,12 +1105,9 @@ gtk_info_bar_buildable_custom_finished (GtkBuildable *buildable,
|
|||||||
if (ad->response_id == GTK_RESPONSE_HELP)
|
if (ad->response_id == GTK_RESPONSE_HELP)
|
||||||
gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (info_bar->priv->action_area),
|
gtk_button_box_set_child_secondary (GTK_BUTTON_BOX (info_bar->priv->action_area),
|
||||||
GTK_WIDGET (object), TRUE);
|
GTK_WIDGET (object), TRUE);
|
||||||
|
|
||||||
g_free (item->name);
|
|
||||||
g_free (item);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_slist_free (data->items);
|
g_slist_free_full (data->items, action_widget_info_free);
|
||||||
g_string_free (data->string, TRUE);
|
g_string_free (data->string, TRUE);
|
||||||
g_slice_free (SubParserData, data);
|
g_slice_free (SubParserData, data);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user