Commit 83261c52 authored by Michal Srb's avatar Michal Srb Committed by Peter Hutterer

XIChangeHierarchy: Add missing unlock.

When num_changes <= 0 or Xmalloc fails, the display has to be unlocked.
Signed-off-by: default avatarMichal Srb <msrb@suse.com>
Signed-off-by: Peter Hutterer's avatarPeter Hutterer <peter.hutterer@who-t.net>
parent 22ae8d4f
......@@ -49,14 +49,14 @@ XIChangeHierarchy(Display* dpy,
xXIChangeHierarchyReq *req;
XExtDisplayInfo *info = XInput_find_display(dpy);
char *data = NULL, *dptr;
int dlen = 0, i;
int dlen = 0, i, ret = Success;
LockDisplay(dpy);
if (_XiCheckExtInit(dpy, XInput_2_0, info) == -1)
return (NoSuchExtension);
if (num_changes <= 0)
return Success;
goto out;
GetReq(XIChangeHierarchy, req);
req->reqType = info->codes->major_opcode;
......@@ -91,8 +91,10 @@ XIChangeHierarchy(Display* dpy,
req->length += dlen / 4; /* dlen is 4-byte aligned */
data = Xmalloc(dlen);
if (!data)
return BadAlloc;
if (!data) {
ret = BadAlloc;
goto out;
}
dptr = data;
for (i = 0, any = changes; i < num_changes; i++, any++)
......@@ -155,8 +157,10 @@ XIChangeHierarchy(Display* dpy,
}
Data(dpy, data, dlen);
out:
Xfree(data);
UnlockDisplay(dpy);
SyncHandle();
return Success;
return ret;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment