On Thu, Dec 9, 2010 at 12:32 PM, Sean Gillies <sean.gill...@gmail.com> wrote: > FWIW, here's the GeoDjango approach: > > http://code.djangoproject.com/browser/django/trunk/django/contrib/gis/geos/libgeos.py#L53 > > and the Shapely approach: > > https://github.com/sgillies/shapely/blob/master/shapely/geos.py#L148 > > Shapely by default takes the error messages and sends them to > /dev/null because I didn't find them super useful. Each of the above > use a callback factory from ctypes > > http://docs.python.org/library/ctypes.html#callback-functions
I was poking around those projects last night and gave a similar approach a try by tossing the errors out and relying on return values from GEOS functions instead, but the problem remains. I pared everything down to a minimal script to reproduce the problem. Here's where it gets weird... this is the definition of the initialization with the notice and error handlers: def error_handler(*args) #print "anything" raise args[0] % args[1] end This will cause the segfault/weirdness to occur. However, when you uncomment the print line, you get no segfault or weirdness. The print line can even output an empty string so long as you NULL terminate it, so outputting with 'print "\0"' will still eliminate the segfaults. I'll drop a line to the FFI groups when I get a chance and we'll see how that goes. Cheers _______________________________________________ geos-devel mailing list geos-devel@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/geos-devel