From f3f933d0d6b10986d77d4a45e0bb4363027ff7cc Mon Sep 17 00:00:00 2001 From: jef Date: Sat, 12 Jul 2008 09:18:52 +0000 Subject: [PATCH] fix #1141 by fixing #1120 differently. I still don't see why r8592 has an effect, except calling OSRImportFromProj4() in locale "C". Just setting LC_NUMERIC probably resolves the side effects leading to #1141 without reopening #1120. But there might be - even more subtle - side effects left - watch out. git-svn-id: http://svn.osgeo.org/qgis/trunk@8759 c8812cc2-4d05-0410-92ff-de0c093fc19c --- src/core/qgsspatialrefsys.cpp | 18 +++++++++--------- src/plugins/grass/qgsgrassnewmapset.cpp | 6 +++--- src/providers/grass/qgsgrassprovider.cpp | 8 ++++---- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/core/qgsspatialrefsys.cpp b/src/core/qgsspatialrefsys.cpp index 109c0cf3619..dee4a76888f 100644 --- a/src/core/qgsspatialrefsys.cpp +++ b/src/core/qgsspatialrefsys.cpp @@ -228,10 +228,10 @@ bool QgsSpatialRefSys::loadFromDb(QString db, QString field, long id) mGeoFlag = (geo == 0 ? false : true); setMapUnits(); mIsValidFlag = true; - const char *oldlocale = setlocale(LC_ALL, NULL); - setlocale(LC_ALL, "C"); + const char *oldlocale = setlocale(LC_NUMERIC, NULL); + setlocale(LC_NUMERIC, "C"); OSRImportFromProj4( mSRS, proj4String.toLatin1().constData() ); - setlocale(LC_ALL, oldlocale); + setlocale(LC_NUMERIC, oldlocale); } else { @@ -411,10 +411,10 @@ bool QgsSpatialRefSys::createFromProj4 (const QString theProj4String) if (!myRecord.empty()) { // Success! We have found the proj string by swapping the lat_1 and lat_2 - const char *oldlocale = setlocale(LC_ALL, NULL); - setlocale(LC_ALL, "C"); + const char *oldlocale = setlocale(LC_NUMERIC, NULL); + setlocale(LC_NUMERIC, "C"); OSRImportFromProj4(mSRS, theProj4StringModified.toLatin1().constData() ); - setlocale(LC_ALL, oldlocale); + setlocale(LC_NUMERIC, oldlocale); mySrsId=myRecord["srs_id"].toLong(); QgsDebugMsg("QgsSpatialRefSys::createFromProj4 proj4string match search for srsid returned srsid: " + QString::number(mySrsId)); if (mySrsId > 0) @@ -664,10 +664,10 @@ void QgsSpatialRefSys::setDescription (QString theDescription) } void QgsSpatialRefSys::setProj4String (QString theProj4String) { - const char *oldlocale = setlocale(LC_ALL, NULL); - setlocale(LC_ALL, "C"); + const char *oldlocale = setlocale(LC_NUMERIC, NULL); + setlocale(LC_NUMERIC, "C"); mIsValidFlag = OSRImportFromProj4(mSRS, theProj4String.toLatin1().constData() )==OGRERR_NONE; - setlocale(LC_ALL, oldlocale); + setlocale(LC_NUMERIC, oldlocale); } void QgsSpatialRefSys::setGeographicFlag (bool theGeoFlag) { diff --git a/src/plugins/grass/qgsgrassnewmapset.cpp b/src/plugins/grass/qgsgrassnewmapset.cpp index 8e504d6a3c0..c8b7b9afbe3 100644 --- a/src/plugins/grass/qgsgrassnewmapset.cpp +++ b/src/plugins/grass/qgsgrassnewmapset.cpp @@ -473,10 +473,10 @@ void QgsGrassNewMapset::setGrassProjection() OGRSpatialReferenceH hSRS = NULL; hSRS = OSRNewSpatialReference(NULL); int errcode; - const char *oldlocale = setlocale(LC_ALL, NULL); - setlocale(LC_ALL, "C"); + const char *oldlocale = setlocale(LC_NUMERIC, NULL); + setlocale(LC_NUMERIC, "C"); errcode = OSRImportFromProj4(hSRS, proj4.ascii()); - setlocale(LC_ALL, oldlocale); + setlocale(LC_NUMERIC, oldlocale); if ( errcode!=OGRERR_NONE ) { std::cerr << "OGR can't parse PROJ.4-style parameter string:\n" << proj4.ascii() diff --git a/src/providers/grass/qgsgrassprovider.cpp b/src/providers/grass/qgsgrassprovider.cpp index b67f58c99a3..a8545078ea4 100644 --- a/src/providers/grass/qgsgrassprovider.cpp +++ b/src/providers/grass/qgsgrassprovider.cpp @@ -1253,8 +1253,8 @@ QgsSpatialRefSys QgsGrassProvider::getSRS() QgsGrass::resetError(); QgsGrass::setLocation ( mGisdbase, mLocation ); - char *oldlocale = setlocale(LC_ALL, NULL); - setlocale(LC_ALL, "C"); + const char *oldlocale = setlocale(LC_NUMERIC, NULL); + setlocale(LC_NUMERIC, "C"); if ( setjmp(QgsGrass::fatalErrorEnv()) == 0 ) { @@ -1263,7 +1263,7 @@ QgsSpatialRefSys QgsGrassProvider::getSRS() QgsGrass::clearErrorEnv(); if ( QgsGrass::getError() == QgsGrass::FATAL ) { - setlocale(LC_ALL, oldlocale); + setlocale(LC_NUMERIC, oldlocale); QgsDebugMsg(QString("Cannot get default window: %1").arg(QgsGrass::getErrorMessage())); return QgsSpatialRefSys(); } @@ -1276,7 +1276,7 @@ QgsSpatialRefSys QgsGrassProvider::getSRS() free ( wkt); } - setlocale(LC_ALL, oldlocale); + setlocale(LC_NUMERIC, oldlocale); QgsSpatialRefSys srs; srs.createFromWkt(WKT);