[geos-devel] Segfault with GEOSGeom_destroy()

Homme Zwaagstra hrz at geodata.soton.ac.uk
Wed Dec 27 12:47:44 EST 2006


I haven't checked libgeos_c.h but I'm pretty sure that the ring
becomes owned by the polygon. Therefore you only need to call
GEOSGeom_destroy() once, passing in the polygon as the argument.

Again, check the comments in the header, but I think that the
GEOSCoordSeq s will become owned by the LinearRing, so destroying it
separately would also cause a memory violation; it will be cleaned up
when the parent linearring (or parent polygon!) is destroyed.

Hopefully that will point you in the right direction.

Homme

On Wed, Dec 27, 2006 at 01:54:50PM +0100, Jean-Claude Repetto wrote:
> Hello,
> 
> This is my first attempt to use the GEOS library, so I am probably doing
> something wrong.
> I just want to create a polygon and then to destroy it.
> 
> 	initGEOS(NULL, NULL);	// GEOS initialization
> 	GEOSCoordSeq s = GEOSCoordSeq_create(npoints, 2);
> 	for (i=0; i<npoints; i++) {
> 		GEOSCoordSeq_setX (s, i, X[i]);
> 		GEOSCoordSeq_setY (s, i, Y[i]);
> 	}
> 	GEOSGeom ring = GEOSGeom_createLinearRing(s);
> 	GEOSGeom polygon = GEOSGeom_createPolygon(ring, NULL, 0);
> 
> 	GEOSGeom_destroy(polygon);
> 	GEOSGeom_destroy(ring);
> 	GEOSCoordSeq_destroy(s);
> 
> 	finishGEOS();			// Cleanup GEOS
> 
> 
> The polygon is destroyed, but there is a segfault when the ring is
> destroyed (same problem when the sequence is destroyed).
> 
> I have tested GEOS 2.2.3 and GEOS 3.0.0_RC3.
> 
> Any help would be appreciated.
> 
> Thanks,
> Jean-Claude
> 
> 
> _______________________________________________
> geos-devel mailing list
> geos-devel at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel
> 

-- 
Homme Zwaagstra
GeoData Institute
University of Southampton





More information about the geos-devel mailing list