[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