[gtk+] gdkwindow: Fix event unref iteration



commit d08ff485f28f23427bff1b3aac64ab3f77a8664d
Author: Colin Walters <walters verbum org>
Date:   Fri Dec 17 15:36:51 2010 -0500

    gdkwindow: Fix event unref iteration
    
    We were double looping previously which caused a NULL deref.

 gdk/gdkwindow.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index da50f99..43174e9 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -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);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]