gdkwindow: Fix event unref iteration
We were double looping previously which caused a NULL deref.
This commit is contained in:
parent
33fb60e050
commit
d08ff485f2
@ -1815,11 +1815,15 @@ _gdk_event_filter_unref (GdkWindow *window,
|
|||||||
else
|
else
|
||||||
filters = &window->filters;
|
filters = &window->filters;
|
||||||
|
|
||||||
for (tmp_list = *filters; tmp_list; tmp_list = tmp_list->next)
|
tmp_list = *filters;
|
||||||
|
while (tmp_list)
|
||||||
{
|
{
|
||||||
GdkEventFilter *iter_filter = tmp_list->data;
|
GdkEventFilter *iter_filter = tmp_list->data;
|
||||||
GList *node;
|
GList *node;
|
||||||
|
|
||||||
|
node = tmp_list;
|
||||||
|
tmp_list = tmp_list->next;
|
||||||
|
|
||||||
if (iter_filter != filter)
|
if (iter_filter != filter)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1829,9 +1833,6 @@ _gdk_event_filter_unref (GdkWindow *window,
|
|||||||
if (filter->ref_count != 0)
|
if (filter->ref_count != 0)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
node = tmp_list;
|
|
||||||
tmp_list = tmp_list->next;
|
|
||||||
|
|
||||||
*filters = g_list_remove_link (*filters, node);
|
*filters = g_list_remove_link (*filters, node);
|
||||||
g_free (filter);
|
g_free (filter);
|
||||||
g_list_free_1 (node);
|
g_list_free_1 (node);
|
||||||
|
Loading…
Reference in New Issue
Block a user