diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2018-09-27 19:15:13 +0200 |
|---|---|---|
| committer | Even Rouault <even.rouault@spatialys.com> | 2018-09-27 20:24:05 +0200 |
| commit | b65cc5d50414212efa0029e7715c92e880967a4f (patch) | |
| tree | bc139f6787ab6ce1820b78dce5175015180b75c6 /src/pj_utils.c | |
| parent | 0b32b840d3161c64d8f1f487b153178528c8c124 (diff) | |
| download | PROJ-b65cc5d50414212efa0029e7715c92e880967a4f.tar.gz PROJ-b65cc5d50414212efa0029e7715c92e880967a4f.zip | |
cs2cs_emulation_setup: fix issue with non C-locale
in +towgs84 case, we use sprintf() with floating-point formatter to output
the ellipsoid parameters. For a locale with decimal separtor != dot, the
resulting string will not be parsed correctly by proj_atof(), leading to
wrong numeric result.
The fix is similar to the one done in pj_latlong_from_proj()
Note for later: if using C++, we could use a locale-independent formatting
solution to avoid such issue.
Diffstat (limited to 'src/pj_utils.c')
| -rw-r--r-- | src/pj_utils.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/pj_utils.c b/src/pj_utils.c index 3f18cc7e..81a80b45 100644 --- a/src/pj_utils.c +++ b/src/pj_utils.c @@ -105,6 +105,8 @@ PJ *pj_latlong_from_proj( PJ *pj_in ) { char* ptr = defn+strlen(defn); sprintf( ptr, " +es=%.16g", pj_in->es ); + /* TODO later: use C++ ostringstream with imbue(std::locale::classic()) */ + /* to be locale unaware */ for(; *ptr; ptr++) { if( *ptr == ',' ) |
