[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