On 11/07/2011 01:39 PM, Peter Hutterer wrote:
> 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));

I thought double parens has been taboo for quite some time now... why
did you use one here?

> +    *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;

_______________________________________________
[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