diff options
author | Matthias Clasen <mclasen@redhat.com> | 2008-09-17 10:43:52 -0400 |
---|---|---|
committer | Adam Jackson <ajax@redhat.com> | 2008-09-17 10:43:52 -0400 |
commit | 2335eafe4b53c27f6f9ee1bab3e1f5842f896428 (patch) | |
tree | 1407ef7ebcc9ca73d416a727e04b007893c5cf86 | |
parent | db0b85db29699be6bf7e78dede655d59ba926dfc (diff) |
Bug #17616: Fix an XCB leak when the client has a non-fatal error handler.
-rw-r--r-- | src/xcb_io.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/xcb_io.c b/src/xcb_io.c index 05f3959e..393cff65 100644 --- a/src/xcb_io.c +++ b/src/xcb_io.c @@ -409,15 +409,18 @@ Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard) { case X_LookupColor: case X_AllocNamedColor: + free(error); return 0; } break; case BadFont: if(err->majorCode == X_QueryFont) + free(error); return 0; break; case BadAlloc: case BadAccess: + free(error); return 0; } @@ -426,10 +429,13 @@ Status _XReply(Display *dpy, xReply *rep, int extra, Bool discard) * want to suppress the error. */ for(ext = dpy->ext_procs; ext; ext = ext->next) - if(ext->error && ext->error(dpy, err, &ext->codes, &ret_code)) + if(ext->error && ext->error(dpy, err, &ext->codes, &ret_code)) { + free(error); return ret_code; + } - _XError(dpy, (xError *) error); + _XError(dpy, err); + free(error); return 0; } |