]> Pileus Git - ~andy/gtk/commitdiff
gdk: Don't infinite loop when flushing moves
authorBenjamin Otte <otte@redhat.com>
Thu, 5 Aug 2010 00:26:59 +0000 (02:26 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 10 Aug 2010 19:02:30 +0000 (21:02 +0200)
Spotted by Kristian Rietvield. Fixes testoffscreen test.

gdk/gdkwindow.c

index 81f3ab331b785a2e551cd8ba3956ee77233df1a6..5797591b387dc4375cbd0021de652926a9a9bc30 100644 (file)
@@ -3409,14 +3409,16 @@ gdk_window_flush_outstanding_moves (GdkWindow *window)
 {
   GdkWindowObject *private;
   GdkWindowObject *impl_window;
 {
   GdkWindowObject *private;
   GdkWindowObject *impl_window;
-  GList *l;
+  GList *l, *outstanding;
   GdkWindowRegionMove *move;
 
   private = (GdkWindowObject *) window;
 
   impl_window = gdk_window_get_impl_window (private);
   GdkWindowRegionMove *move;
 
   private = (GdkWindowObject *) window;
 
   impl_window = gdk_window_get_impl_window (private);
+  outstanding = impl_window->outstanding_moves;
+  impl_window->outstanding_moves = NULL;
 
 
-  for (l = impl_window->outstanding_moves; l != NULL; l = l->next)
+  for (l = outstanding; l != NULL; l = l->next)
     {
       move = l->data;
 
     {
       move = l->data;
 
@@ -3426,8 +3428,7 @@ gdk_window_flush_outstanding_moves (GdkWindow *window)
       gdk_window_region_move_free (move);
     }
 
       gdk_window_region_move_free (move);
     }
 
-  g_list_free (impl_window->outstanding_moves);
-  impl_window->outstanding_moves = NULL;
+  g_list_free (outstanding);
 }
 
 /**
 }
 
 /**