From 102db3cc7d35dff9c8b6f925a7018fad9c245af3 Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Sat, 22 Dec 2007 21:03:40 +0000 Subject: [PATCH] Plug mem leaks. Bug #504886. 2007-12-22 Christian Persch * gdk/x11/gdkscreen-x11.c: (init_randr12): Plug mem leaks. Bug #504886. svn path=/trunk/; revision=19223 --- ChangeLog | 4 ++++ gdk/x11/gdkscreen-x11.c | 14 ++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index e80b04fd32..f1fe7f220f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2007-12-22 Christian Persch + + * gdk/x11/gdkscreen-x11.c: (init_randr12): Plug mem leaks. Bug #504886. + 2007-12-22 Christian Persch * modules/other/gail/gail.c: diff --git a/gdk/x11/gdkscreen-x11.c b/gdk/x11/gdkscreen-x11.c index 469f9b6c2a..5c1f36e5db 100644 --- a/gdk/x11/gdkscreen-x11.c +++ b/gdk/x11/gdkscreen-x11.c @@ -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