On Fri, 2003-10-10 at 11:47, Greg Stark wrote:
> I have a program here that's always worked fine in the past that has suddenly
> started crashing recently. I've tracked the crash down to a XGetWindowProperty
> call that is returning a NULL prop_return. The weird thing is that
> nitems_return is non-zero (9 in fact) though num_prop_return is zero.
> 
> Maybe I misunderstand the API here, but it seems the author read the same man
> page and came to the same conclusion. He only checks for a nonzero
> nitems_return before dereferencing prop_return. 
> 
> The weird thing is it only seems to happen for KDE windows, not other windows.
> 
> Is this a bug in xlib? Or in this application? Is there a documentation bug?
> 
> XGetWindowProperty(dpy, win, XA_WM_NAME, 0, 1000, False,
>                    AnyPropertyType, &type, &format, &items,
>                    &left, &name)

The best way to check for the success of XGetWindowProperty()
with a type of AnyPropertyType is to check that the actual_type
is not None.

Checking the returned nitems doesn't work because an empty property
will result in a block of length 1 being allocated, but a
nitems of 0. So, checking nitems != 0 will result in memory
leaks.

However, that doesn't explain your behavior above. It's either
an Xserver or Xlib bug (unlikely, IMO, this stuff doesn't change
much at all), or a bug in the application code outside of what
you have quoted.

One possibility that comes to mind is that the author is trapping X
errors but not looking at the return value from XGetWindowProperty().
If you are trapping X errors, then you need to write;

 if (XGetWindowProperty (...) != Success) {
 }

Regards,
                                                Owen


_______________________________________________
XFree86 mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xfree86

Reply via email to