Currently not needed since the InputClientRec is a self-contained struct. As
part of the touch rework that won't be the case in the future and a function
to allocate/free memory appropriately is required.

Signed-off-by: Peter Hutterer <[email protected]>
---
 Xi/exevents.c |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 53db036..7f8e6db 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1628,6 +1628,19 @@ SelectForWindow(DeviceIntPtr dev, WindowPtr pWin, 
ClientPtr client,
     return Success;
 }
 
+static void
+FreeInputClient(InputClientsPtr *other)
+{
+    free((*other));
+    *other = NULL;
+}
+
+static InputClientsPtr
+AllocInputClient(void)
+{
+    return calloc(1, sizeof(InputClients));
+}
+
 int
 AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask mask, int mskidx)
 {
@@ -1635,7 +1648,7 @@ AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask 
mask, int mskidx)
 
     if (!pWin->optional && !MakeWindowOptional(pWin))
        return BadAlloc;
-    others = calloc(1, sizeof(InputClients));
+    others = AllocInputClient();
     if (!others)
        return BadAlloc;
     if (!pWin->optional->inputMasks && !MakeInputMasks(pWin))
@@ -1649,7 +1662,7 @@ AddExtensionClient(WindowPtr pWin, ClientPtr client, Mask 
mask, int mskidx)
     return Success;
 
 bail:
-    free(others);
+    FreeInputClient(&others);
     return BadAlloc;
 }
 
@@ -1721,14 +1734,14 @@ InputClientGone(WindowPtr pWin, XID id)
        if (other->resource == id) {
            if (prev) {
                prev->next = other->next;
-               free(other);
+               FreeInputClient(&other);
            } else if (!(other->next)) {
                if (ShouldFreeInputMasks(pWin, TRUE)) {
                    wOtherInputMasks(pWin)->inputClients = other->next;
                    free(wOtherInputMasks(pWin));
                    pWin->optional->inputMasks = (OtherInputMasks *) NULL;
                    CheckWindowOptionalNeed(pWin);
-                   free(other);
+                   FreeInputClient(&other);
                } else {
                    other->resource = FakeClientID(0);
                    if (!AddResource(other->resource, RT_INPUTCLIENT,
@@ -1737,7 +1750,7 @@ InputClientGone(WindowPtr pWin, XID id)
                }
            } else {
                wOtherInputMasks(pWin)->inputClients = other->next;
-               free(other);
+               FreeInputClient(&other);
            }
            RecalculateDeviceDeliverableEvents(pWin);
            return Success;
-- 
1.7.7

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to