[geos-devel] Delocalizing the WKT writer?

Chris Hodgson chodgson at refractions.net
Thu Aug 28 12:49:19 EDT 2008


I'm no locale expert, but it looks to me like that is the code that IS 
de-localizing, setting to using the C locale instead of whatever the 
locale is set to in the system? Are there other setlocale calls in the 
writer code itself that undermine this?

Chris

sgillies at frii.com wrote:
> Can one of the C++ gurus explain why delocalizing the writer (to fix bug
> 201) isn't as simple as bracing the guts of this function with calls to
> setlocale()?
>
> capi/geos_c.cpp:
>
> char*
> GEOSWKTWriter_write(WKTWriter *writer, const Geometry *geom)
> {
>     try
> 	{
>                 // switch to C locale
>                 std::setlocale(LC_ALL, "C");
> 		std::string s = writer->write(geom);
>
> 		char *result;
> 		result = (char*) std::malloc( s.length() + 1);
> 		std::strcpy(result, s.c_str() );
>                 // switch back to native locale
>                 std::setlocale(LC_ALL, "");
> 		return result;
> 	}
> 	catch (const std::exception &e)
> 	{
> 		ERROR_MESSAGE("%s", e.what());
> 		return NULL;
> 	}
>
> 	catch (...)
> 	{
> 		ERROR_MESSAGE("Unknown exception thrown");
> 		return NULL;
> 	}
> }
>
> Sure, it would be nice to work this down into the C++ code, but the
> WKTWriter class is a nightmare.
>
> Sean
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel
>   



More information about the geos-devel mailing list