]> Pileus Git - ~andy/gtk/commitdiff
Plug mem leaks. Bug #504886.
authorChristian Persch <chpe@gnome.org>
Sat, 22 Dec 2007 21:03:40 +0000 (21:03 +0000)
committerChristian Persch <chpe@src.gnome.org>
Sat, 22 Dec 2007 21:03:40 +0000 (21:03 +0000)
2007-12-22  Christian Persch  <chpe@gnome.org>

* gdk/x11/gdkscreen-x11.c: (init_randr12): Plug mem leaks. Bug #504886.

svn path=/trunk/; revision=19223

ChangeLog
gdk/x11/gdkscreen-x11.c

index e80b04fd32d7c6d70ad6cb2467114bf9558952bc..f1fe7f220f05153567c68dcf95414263846cd106 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2007-12-22  Christian Persch  <chpe@gnome.org>
+
+       * gdk/x11/gdkscreen-x11.c: (init_randr12): Plug mem leaks. Bug #504886.
+
 2007-12-22  Christian Persch  <chpe@gnome.org>
         
         * modules/other/gail/gail.c:
index 469f9b6c2aa1f413bac17593b9708a9bd0e473ea..5c1f36e5db469466d279c7b1ad357237af68e0a0 100644 (file)
@@ -678,12 +678,14 @@ init_randr12 (GdkScreen *screen)
   if (!display_x11->have_randr12)
       return FALSE;
 
-  monitors = g_array_new (TRUE, TRUE, sizeof (GdkX11Monitor));
-  
   resources = XRRGetScreenResources (screen_x11->xdisplay,
                                     screen_x11->xroot_window);
+  if (!resources)
+    return FALSE;
   
-  /* FIXME: can GetScreenResources return NULL except when it's out of memory? */
+  monitors = g_array_sized_new (FALSE, TRUE, sizeof (GdkX11Monitor),
+                                monitors->len);
+
   for (i = 0; i < resources->noutput; ++i)
     {
       XRROutputInfo *output =
@@ -707,14 +709,18 @@ init_randr12 (GdkScreen *screen)
          monitor.manufacturer = NULL;
 
          g_array_append_val (monitors, monitor);
+
+          XRRFreeCrtcInfo (crtc);
        }
 
       XRRFreeOutputInfo (output);
     }
 
+  XRRFreeScreenResources (resources);
+
   screen_x11->n_monitors = monitors->len;
   screen_x11->monitors = (GdkX11Monitor *)g_array_free (monitors, FALSE);
-  
+
   return TRUE;
 #endif