diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-09-19 05:00:35 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-09-19 05:00:35 +0200 |
commit | 1431fbc28baba0e87fada21d5978ccbef5f3204b (patch) | |
tree | fdf4a7c8a87370ad46763e03376629d7e37f56cf | |
parent | 118199ad446df12a6a937a514c4ce5d297dcc174 (diff) | |
download | libcanberra-1431fbc28baba0e87fada21d5978ccbef5f3204b.tar.gz |
gtk-module: don't leak memory when reading X11 properties
-rw-r--r-- | src/canberra-gtk-module.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/canberra-gtk-module.c b/src/canberra-gtk-module.c index 9e849b3..b849161 100644 --- a/src/canberra-gtk-module.c +++ b/src/canberra-gtk-module.c @@ -302,6 +302,7 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) { gulong nitems_return; gulong bytes_after_return; guchar *data = NULL; + gint ret = -1; if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), GDK_WINDOW_XID(w), gdk_x11_get_xatom_by_name_for_display(d, "_NET_WM_DESKTOP"), @@ -314,13 +315,13 @@ static gint window_get_desktop(GdkDisplay *d, GdkWindow *w) { guint32 desktop = *(guint32*) data; if (desktop != 0xFFFFFFFF) - return (gint) desktop; + ret = (gint) desktop; } if (type_return != None && data != NULL) XFree (data); - return -1; + return ret; } static gint display_get_desktop(GdkDisplay *d) { @@ -329,6 +330,7 @@ static gint display_get_desktop(GdkDisplay *d) { gulong nitems_return; gulong bytes_after_return; guchar *data = NULL; + gint ret = -1; if (XGetWindowProperty(GDK_DISPLAY_XDISPLAY(d), DefaultRootWindow(GDK_DISPLAY_XDISPLAY(d)), gdk_x11_get_xatom_by_name_for_display(d, "_NET_CURRENT_DESKTOP"), @@ -342,13 +344,13 @@ static gint display_get_desktop(GdkDisplay *d) { guint32 desktop = *(guint32*) data; if (desktop != 0xFFFFFFFF) - return (gint) desktop; + ret = (gint) desktop; } if (type_return != None && data != NULL) XFree (data); - return -1; + return ret; } static void dispatch_sound_event(SoundEventData *d) { |