Ops, sorry, I fell in the initGEOS missing call myself. Actually I can *not* reproduce the error against the 2.2 branch.
Here is my testcase, if you confirm it fails please send a backtrace, or valgrind output. ---------------------------------------------------------------------- #include <stdlib.h> #include <stdio.h> #include <geos_c.h> int main() { initGEOS(printf, printf); GEOSGeom aPolygon1,aPolygon2; const char *aString1 = "POLYGON ((125.331 0,3.35823e-06 125.331,-125.331 6.71 646e-06,-1.00747e-05 -125.331,125.331 0))"; const char *aString2 = "POLYGON ((245.331 120,120 245.331,-5.331 120,120 -5.3 31,245.331 120))"; aPolygon1 = GEOSGeomFromWKT(aString1); aPolygon2 = GEOSGeomFromWKT(aString2); GEOSGeom anIntersection = GEOSIntersection(aPolygon1,aPolygon2); } ---------------------------------------------------------------------- --strk; On Wed, Jun 28, 2006 at 01:51:59PM +0200, [EMAIL PROTECTED] wrote: > Oh, ok, I now remember to have fixed this in HEAD. > Can you confirm ? > > --strk; > > On Wed, Jun 28, 2006 at 09:15:25AM +0800, Sheng Liang (SH/CBC) wrote: > > Hi: > > Yes. I have called initGEOS() before I create those GEOSGeom. > > As I said, if I provide some other polygons, there is no fault. > > The fault just happened to these two specific polygons. > > > > Regards > > > > -----Original Message----- > > From: [EMAIL PROTECTED] > > [mailto:[EMAIL PROTECTED] On Behalf Of > > [EMAIL PROTECTED] > > Sent: Tuesday, June 27, 2006 23:45 > > To: GEOS Development List > > Subject: Re: [geos-devel] Encounter Segmentation Fault with GEOS 2.2.2 > > > > Did you call initGEOS() ? > > That's currently *required* (might change in the future) > > > > --strk; > > > > On Mon, Jun 26, 2006 at 12:07:48PM +0800, Sheng Liang (SH/CBC) wrote: > > > HI: > > > I have tried aString1.c_str(), but I still get the same error. And I > > > > > even use such code: > > > GEOSGeom aPolygon1,aPolygon2; > > > const char *aString1 = "POLYGON ((125.331 0,3.35823e-06 > > > 125.331,-125.331 6.71646e-06,-1.00747e-05 -125.331,125.331 0))"; > > > > > > const char *aString2 = "POLYGON ((245.331 120,120 245.331,-5.331 > > > 120,120 -5.331,245.331 120))"; > > > > > > > > > aPolygon1 = GEOSGeomFromWKT(aString1); > > > aPolygon2 = GEOSGeomFromWKT(aString2); > > > > > > GEOSGeom anIntersection = GEOSIntersection(aPolygon1,aPolygon2); > > > > > > And the error is the same. > > > Regards > > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] > > > [mailto:[EMAIL PROTECTED] On Behalf Of Mateusz > > > Loskot > > > Sent: Monday, June 26, 2006 11:49 > > > To: GEOS Development List > > > Subject: Re: [geos-devel] Encounter Segmentation Fault with GEOS 2.2.2 > > > > > > Sheng Liang (SH/CBC) wrote: > > > > Hi: I encountered an error of "Segmentation Fault" with GEOS 2.2.2. > > > > What I am doing is to get intersection of two polygons. The error > > > > happens to the specific polygong: POLYGON ((125.331 0,3.35823e-06 > > > > 125.331,-125.331 6.71646e-06,-1.00747e-05 -125.331,125.331 0)) and > > > > POLYGON ((245.331 120,120 245.331,-5.331 120,120 -5.331,245.331 > > > > 120)) > > > > > > > There is no error to others polygons. So I think it must be an error > > > > > > of GEOS 2.2.2 code. > > > > > > > > My code is : GEOSGeom aPolygon1,aPolygon2; string aString1("POLYGON > > > > ((125.331 0,3.35823e-06 125.331,-125.331 6.71646e-06,-1.00747e-05 > > > > -125.331,125.331 0))"); > > > > > > > > string aString2("POLYGON ((245.331 120,120 245.331,-5.331 120,120 > > > > -5.331,245.331 120))"); > > > > > > > > aPolygon1 = GEOSGeomFromWKT(aString1.data()); > > > > aPolygon2 = GEOSGeomFromWKT(aString2.data()); > > > > > > I'm suer in 99% that the problem is in your code above. > > > You should not access internal buffer of std::string with data() > > > member function. It should be used in very rare cases because it > > > breaks OOP rule of encapsulation! It's available only for C > > compatibility. > > > > > > GEOSGeomFromWKT expects to get const char* : > > > Geometry *GEOSGeomFromWKT(const char *wkt); > > > > > > so, you should call it as follows: > > > > > > aPolygon1 = GEOSGeomFromWKT(aString1.c_str()); > > > > > > std::string::c_str() returns const char*. > > > > > > Cheers > > > -- > > > Mateusz Loskot > > > http://mateusz.loskot.net > > > _______________________________________________ > > > geos-devel mailing list > > > geos-devel@geos.refractions.net > > > http://geos.refractions.net/mailman/listinfo/geos-devel > > > _______________________________________________ > > > geos-devel mailing list > > > geos-devel@geos.refractions.net > > > http://geos.refractions.net/mailman/listinfo/geos-devel > > > > -- > > > > /"\ ASCII Ribbon Campaign > > \ / Respect for low technology. > > X Keep e-mail messages readable by any computer system. > > / \ Keep it ASCII. > > > > _______________________________________________ > > geos-devel mailing list > > geos-devel@geos.refractions.net > > http://geos.refractions.net/mailman/listinfo/geos-devel > > _______________________________________________ > > geos-devel mailing list > > geos-devel@geos.refractions.net > > http://geos.refractions.net/mailman/listinfo/geos-devel > > -- > > /"\ ASCII Ribbon Campaign > \ / Respect for low technology. > X Keep e-mail messages readable by any computer system. > / \ Keep it ASCII. > > _______________________________________________ > geos-devel mailing list > geos-devel@geos.refractions.net > http://geos.refractions.net/mailman/listinfo/geos-devel -- /"\ ASCII Ribbon Campaign \ / Respect for low technology. X Keep e-mail messages readable by any computer system. / \ Keep it ASCII. _______________________________________________ geos-devel mailing list geos-devel@geos.refractions.net http://geos.refractions.net/mailman/listinfo/geos-devel