[PATCH v2 2/4] Free the data returned by XGetWindowProperty()

Eirik Byrkjeflot Anonsen eirik at eirikba.org
Thu May 21 11:34:26 PDT 2015


walter harms <wharms at bfs.de> writes:

> Am 21.05.2015 14:55, schrieb Eirik Byrkjeflot Anonsen:
>> Signed-off-by: Eirik Byrkjeflot Anonsen <eirik at eirikba.org>
>> ---
>>  xprop.c | 10 ++++++++--
>>  1 file changed, 8 insertions(+), 2 deletions(-)
>> 
>> diff --git a/xprop.c b/xprop.c
>> index ba23b87..4576db6 100644
>> --- a/xprop.c
>> +++ b/xprop.c
>> @@ -1442,9 +1442,15 @@ Get_Window_Property_Data_And_Type (Atom atom,
>>      unsigned long nitems;
>>      unsigned long nbytes;
>>      unsigned long bytes_after;
>> -    unsigned char *prop;
>> +    static unsigned char *prop = NULL;
>>      int status;
>> -	
>> +
>> +    if (prop)
>> +    {
>> +	XFree(prop);
>> +	prop = NULL;
>> +    }
>> +
>
>
> let free() handle prop==NULL
>
> but in general the caller is responsible to free the memory
>

The problem is that the caller does not know whether this memory was
allocated by X, by malloc() or not actually allocated at all. If I
remember correctly, all three cases exist in the code. So only the code
in this function knows that the correct thing to do is to call XFree().

eirik

> re,
>  wh
>
>>      status = XGetWindowProperty(dpy, target_win, atom, 0, (max_len+3)/4,
>>  				False, AnyPropertyType, &actual_type,
>>  				&actual_format, &nitems, &bytes_after,
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel


More information about the xorg-devel mailing list