]> Pileus Git - ~andy/gtk/commitdiff
gdkwindow: Fix event unref iteration
authorColin Walters <walters@verbum.org>
Fri, 17 Dec 2010 20:36:51 +0000 (15:36 -0500)
committerColin Walters <walters@verbum.org>
Fri, 17 Dec 2010 20:41:15 +0000 (15:41 -0500)
We were double looping previously which caused a NULL deref.

gdk/gdkwindow.c

index da50f994d44ddc59d904bdc2f1aab6ed3c9524d0..43174e98e638d0f2683dda00dd20272773cd36cf 100644 (file)
@@ -1815,11 +1815,15 @@ _gdk_event_filter_unref (GdkWindow       *window,
   else
     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;
       GList *node;
 
+      node = tmp_list;
+      tmp_list = tmp_list->next;
+
       if (iter_filter != filter)
        continue;
 
@@ -1829,9 +1833,6 @@ _gdk_event_filter_unref (GdkWindow       *window,
       if (filter->ref_count != 0)
        continue;
 
-      node = tmp_list;
-      tmp_list = tmp_list->next;
-
       *filters = g_list_remove_link (*filters, node);
       g_free (filter);
       g_list_free_1 (node);