[PATCH] input: add valuator_mask_free() to free a valuator mask.

Chase Douglas chase.douglas at canonical.com
Thu Jan 6 06:55:33 PST 2011


On 01/05/2011 11:34 PM, Peter Hutterer wrote:
> On Wed, Jan 05, 2011 at 11:00:33PM -0500, Chase Douglas wrote:
>> On 01/05/2011 10:12 PM, Peter Hutterer wrote:
>>> Expecting the caller to free the mask requires us to keep it in a single
>>> memory block (which may be an issue lateron), aside from leaving the API
>>> asymetrical. Provide valuator_mask_free() to free the memory and reset the
>>> mask pointer to NULL.
>>>
>>> Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
>>> ---
>>> bit of an oversight in the first patchset...
>>>
>>>  dix/inpututils.c |    8 ++++++++
>>>  include/input.h  |    1 +
>>>  test/input.c     |    3 ++-
>>>  3 files changed, 11 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/dix/inpututils.c b/dix/inpututils.c
>>> index 2877804..ef3142c 100644
>>> --- a/dix/inpututils.c
>>> +++ b/dix/inpututils.c
>>> @@ -433,6 +433,14 @@ valuator_mask_new(int num_valuators)
>>>      return mask;
>>>  }
>>>  
>>> +void
>>> +valuator_mask_free(ValuatorMask **mask)
>>> +{
>>> +    free(*mask);
>>> +    *mask = NULL;
>>> +}
>>
>> I'm curious why not just a single pointer like traditional free(),
>> leaving the task of setting the pointer to NULL to the caller?
> 
> there's no usecase I can think of where the original pointer value is
> needed after freeing the memory it points to. you'd end up with every caller
> just having two LOC instead of one.
> 
> there are only a few usecases for not needing to reset the pointer (but
> in those case setting it to NULL doesn't hurt anyway). otoh, forgetting to
> reset a pointer to NULL after freeing it is quite common and can be painful
> to debug.

Ok, so it's just changing the semantics to be cleaner and less error
prone. I can live with that :).

Reviewed-by: Chase Douglas <chase.douglas at canonical.com>


More information about the xorg-devel mailing list