Skip to content
Prev 1749 / 63424 Next

graphics bug: type="l" (PR#120)

Prof Brian D Ripley <ripley@stats.ox.ac.uk> writes:
Apparently, this is not only device-specific but X-server specific as
the following network experiment shows:

Run on Linux,   display Linux   OK
Run on Solaris, display Linux   OK
Run on Solaris, display Solaris Error
Run on Linux,   display Solaris Error

So it seems that the Solaris OpenWindows X Server cannot handle
requests for drawing lines through more than 64K points. I suppose we
*could* fix this by splitting all XDrawLines into blocks of max 64K.

The man page for XDrawLines and friends have the following blob:

       All x and y members are signed integers.  The width and
       height members are 16-bit unsigned integers.  You should
       be careful not to generate coordinates and sizes out of
       the 16-bit ranges, because the protocol only has 16-bit
       fields for these values.

The "and sizes" bit might be taken to mean that you should do the
above, although it's beyond me how it would work on any platform if
there's only room for 16 bits in the protocol (perhaps the protocol
has changed from X11R5 to R6?). XDrawLines only occurs twice in
devX11.c, so I suppose it's no big deal to fix up.