[PATCH 2/4] Free the data returned by XGetWindowProperty()
Eirik Byrkjeflot Anonsen
eirik at eirikba.org
Thu May 21 04:58:07 PDT 2015
Alan Coopersmith <alan.coopersmith at oracle.com> writes:
> On 05/20/15 05:58 AM, Eirik Byrkjeflot Anonsen wrote:
>> Eirik Byrkjeflot Anonsen <eirik at eirikba.org> writes:
>>
>>> Signed-off-by: Eirik Byrkjeflot Anonsen <eirik at eirikba.org>
>>> ---
>>> xprop.c | 7 +++++--
>>> 1 file changed, 5 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/xprop.c b/xprop.c
>>> index ba23b87..010eff4 100644
>>> --- a/xprop.c
>>> +++ b/xprop.c
>>> @@ -1442,9 +1442,12 @@ 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);
>>> +
>>> status = XGetWindowProperty(dpy, target_win, atom, 0, (max_len+3)/4,
>>> False, AnyPropertyType, &actual_type,
>>> &actual_format, &nitems, &bytes_after,
>>
>> Though now that I look at this one, I wonder whether I can really trust
>> XGetWindowProperty() to always set 'prop', even if it fails. Maybe I
>> should add "prop = NULL" after the call to XFree()?
>
> You can't, since we didn't fix Xlib to always set it until just recently:
> http://cgit.freedesktop.org/xorg/lib/libX11/commit/src/GetProp.c?id=192bbb9e2fc45df4e17b35b6d14ea0eb418dbd39
Nice :)
> In this case, you'd be safe as long as no one removes the Fatal_Error
> calls on failure, but because we can't guarantee that will never happen,
> I'd be happier with setting it to NULL after the XFree, since that's
> cheap and lowest risk.
Agreed. I'll make a v2.
eirik
More information about the xorg-devel
mailing list