[geos-devel] Encounter Segmentation Fault with GEOS 2.2.2

strk at refractions.net strk at refractions.net
Wed Jun 28 07:51:59 EDT 2006


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: geos-devel-bounces at geos.refractions.net
> [mailto:geos-devel-bounces at geos.refractions.net] On Behalf Of
> strk at refractions.net
> 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: geos-devel-bounces at geos.refractions.net
> > [mailto:geos-devel-bounces at geos.refractions.net] 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 at geos.refractions.net
> > http://geos.refractions.net/mailman/listinfo/geos-devel
> > _______________________________________________
> > geos-devel mailing list
> > geos-devel at 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 at geos.refractions.net
> http://geos.refractions.net/mailman/listinfo/geos-devel
> _______________________________________________
> geos-devel mailing list
> geos-devel at 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. 




More information about the geos-devel mailing list