[GRASS-dev] more d.vect-kills-x0

Markus Neteler neteler at itc.it
Wed May 9 17:22:10 EDT 2007


On Wed, May 09, 2007 at 10:02:08PM +0100, Glynn Clements wrote:
> 
> Markus Neteler wrote:
> 
> > revisiting this bug report:
> > http://intevation.de/rt/webrt?serial_num=5263&display=History
> > 
> > I discovered that this sequence:
> > 
> > # in spearfish:
> > 
> > g.region rast=roads -a
> > r.thin roads out=roads_thin
> > r.to.vect -v input=roads_thin output=roads_thin_vect_cat feature=line
> > 
> > g.region n=4922490 s=4921260 e=600300 w=598620 res=30 -a
> > d.rast roads_thin
> > d.vect -c roads_thin_vect_cat 
> > 
> > kills the X monitor (the last line).
> 
> I can reproduce this.
> 
> plot1() calls D_polydots_clip() with n==1. If the point is outside the
> clip region, D_polydots_clip() calls R_polydots_abs() with number==0. 
> For the default COM_Polydots_{abs,rel}() implementations, this is a
> no-op, but XDRIVER does:
> 
> 	cur_x = xpnts[number - 1].x;
> 	cur_y = xpnts[number - 1].y;
> 
> xpnts is NULL (a zero-byte malloc() may return NULL), hence XDRIVER
> segfaults and dies.
> 
> AFAICT, XDRIVER has always had this bug, but nothing ever tried to
> draw zero dots before D_polydots_clip() was added.
> 
> I've added a test to XDRIVER's polydots/polyline/polygon
> functions, which appears to fix the problem.

Thanks, now it works.

Markus




More information about the grass-dev mailing list