DO NOT REPLY TO THIS MESSAGE.  INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.

[STR New]

Link: http://www.fltk.org/str.php?L2304
Version: 1.3-current


I think I got it.  It's in src/fl_rect.cxx, line #733:

    return r ? XRectInRegion(r, x, y, w, h) : 1;

Obviously XRectInRegion() returns the wrong result, if (x+w > 32767), and
probably in some other cases as well.

I don't know enough about X11 coordinates and specifications to say that
it's a bug in XRectInRegion(), but the arguments are defined as int (x,y)
and unsigned int (w,h).  If there are no other limits, this would probably
be a bug in this function.

That said, there's a fix in fltk2 in src/clip.cxx, that reads:

  // first check against the window so we get rid of coordinates
  // outside the 16-bit range the X/Win32 calls take:
  if (r.r() <= 0 || r.b() <= 0 || r.x() >= fl_clip_w || r.y() >=
fl_clip_h)
    return false;

A similar patch would be useful, but I can't provide one right now. This
is just to avoid further useless investigations.


Link: http://www.fltk.org/str.php?L2304
Version: 1.3-current

_______________________________________________
fltk-bugs mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-bugs

Reply via email to