summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_x.cxx11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx
index ced8f27c4..660a0a929 100644
--- a/src/Fl_x.cxx
+++ b/src/Fl_x.cxx
@@ -821,16 +821,19 @@ void fl_sendClientMessage(Window window, Atom message,
}
-/*
- Get window property value (32 bit format)
+/*
+ Get window property value (32 bit format)
Returns zero on success, -1 on error
'data' should be freed with XFree() using this pattern:
-
+
unsigned long *data = 0;
if (0 == get_xwinprop(....., &nitems, &data) ) { ..success.. }
else { ..fail.. }
if ( data ) { XFree(data); data=0; }
+
+ Note: 'data' can be non-zero, even if the return value is -1 (error) and
+ should hence be XFree'd *after* the if/else statement, as described above.
*/
static int get_xwinprop(Window wnd, Atom prop, long max_length,
unsigned long *nitems, unsigned long **data) {
@@ -1907,9 +1910,9 @@ int Fl_X::ewmh_supported() {
if (0 == get_xwinprop(child, fl_NET_SUPPORTING_WM_CHECK, 64,
&nitems, &words) ) {
if ( nitems == 1) result = (child == words[0]);
- if ( words ) { XFree(words); words = 0; }
}
}
+ if ( words ) { XFree(words); words = 0; }
}
return result;