Don't leak the dispatch struct. (#321886)
authorMatthias Clasen <mclasen@redhat.com>
Mon, 5 Jun 2006 15:02:51 +0000 (15:02 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 5 Jun 2006 15:02:51 +0000 (15:02 +0000)
2006-06-05  Matthias Clasen  <mclasen@redhat.com>

* glib/gmain.c (get_dispatch): Don't leak the
dispatch struct.  (#321886)

ChangeLog
ChangeLog.pre-2-12
glib/gmain.c

index 9f7f1497af85b39d6057bc8cec416ad2c77950d9..dda43a87df07af589ec2b92a00f6d65dcbf168d8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-06-05  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gmain.c (get_dispatch): Don't leak the
+       dispatch struct.  (#321886)
+
        * tests/strtod-test.c: Add some tests involving
        leading whitespace.
 
index 9f7f1497af85b39d6057bc8cec416ad2c77950d9..dda43a87df07af589ec2b92a00f6d65dcbf168d8 100644 (file)
@@ -1,5 +1,8 @@
 2006-06-05  Matthias Clasen  <mclasen@redhat.com>
 
+       * glib/gmain.c (get_dispatch): Don't leak the
+       dispatch struct.  (#321886)
+
        * tests/strtod-test.c: Add some tests involving
        leading whitespace.
 
index 39329a2534d9d0bf8b4e51a801982dc994bfdb6f..4a370bfcaebd12e56bc20f70e4b9c1f8b2068dcd 100644 (file)
@@ -107,7 +107,7 @@ typedef struct _GMainDispatch GMainDispatch;
 struct _GMainDispatch
 {
   gint depth;
-  GSList *source;
+  GSList *source; /* stack of current sources */
 };
 
 struct _GMainContext
@@ -1719,6 +1719,12 @@ g_get_current_time (GTimeVal *result)
 #endif
 }
 
+static void
+g_main_dispatch_free (gpointer dispatch)
+{
+  g_slice_free (GMainDispatch, dispatch);
+}
+
 /* Running the main loop */
 
 static GMainDispatch *
@@ -1729,7 +1735,7 @@ get_dispatch (void)
   if (!dispatch)
     {
       dispatch = g_slice_new0 (GMainDispatch);
-      g_static_private_set (&depth_private, dispatch, NULL);
+      g_static_private_set (&depth_private, dispatch, g_main_dispatch_free);
     }
 
   return dispatch;