summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-09-19 05:00:35 +0200
committerLennart Poettering <lennart@poettering.net>2009-09-19 05:00:35 +0200
commit1431fbc28baba0e87fada21d5978ccbef5f3204b (patch)
treefdf4a7c8a87370ad46763e03376629d7e37f56cf
parent118199ad446df12a6a937a514c4ce5d297dcc174 (diff)
gtk-module: don't leak memory when reading X11 properties
-rw-r--r--src/canberra-gtk-module.c10
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) {