- priority: 5 --> 3
The drawcurveline() function in starsupp.c uses a
recursive "divide and conquer" algorithm to draw curved
lines, limiting the level of recursion to 100. The
code which makes the recursive calls uses the integer
results from a call on xform() without checking whether
that function returned a TRUE value for inregion. If
the midpoint passed to xform was outside the clip
region, then the mxloc and myloc values returned by
xform are trash, and will lead to infinite or almost
infinite loops in subsequent recursion by
drawcurveline. A patch, based on the
starchart-3.2.2+png0.2 distribution
is:
diff Base/starsupp.c ./starsupp.c
1461c1461
< if (((abs(mpx - mxloc) + abs(mpy - myloc)) > 0) &&
(clevel < 100)) {
---
> if (inregion && ((abs(mpx - mxloc) + abs(mpy -
myloc)) > 0) && (clevel < 100)) {
This is line 1457 in the 1.2 revision in on the CVS
archive.