summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-07-05 19:48:03 +0000
committerDana Jansens <danakj@orodu.net>2002-07-05 19:48:03 +0000
commitb3c31573549281a9d893f400a41dba5268de7165 (patch)
tree5cccc6de0701f3aba2404dbf07275705988ee8fd
parent6954842d84539c1b345d575a39c5dbd5ab0a1227 (diff)
fix a memleak reported by valgrind
-rw-r--r--src/XAtom.cc13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/XAtom.cc b/src/XAtom.cc
index 62a8f710..c450fc4a 100644
--- a/src/XAtom.cc
+++ b/src/XAtom.cc
@@ -353,7 +353,7 @@ bool XAtom::getValue(Window win, Atom atom, Atom type,
assert(win != None); assert(atom != None); assert(type != None);
assert(size == 8 || size == 16 || size == 32);
assert(nelements > 0);
- unsigned char *c_val; // value alloc'd with c malloc
+ unsigned char *c_val = 0; // value alloc'd with c malloc
Atom ret_type;
int ret_size;
unsigned long ret_bytes;
@@ -363,12 +363,11 @@ bool XAtom::getValue(Window win, Atom atom, Atom type,
result = XGetWindowProperty(_display, win, atom, 0l, 1l, False,
AnyPropertyType, &ret_type, &ret_size,
&nelements, &ret_bytes, &c_val);
- if (result != Success || ret_type == None || nelements < 1)
- // an error occured, the property does not exist on the window, or is empty
- return false;
- if (ret_type != type || ret_size != size) {
- // wrong data in property
- XFree(c_val);
+ if (result != Success || ret_type != type || ret_size != size ||
+ nelements < 1) {
+ // an error occured, the property does not exist on the window, or is empty,
+ // or the wrong data is in property for the request
+ if (c_val) XFree(c_val);
return false;
}
// the data is correct, now, is there more elements left?