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