[QGIS Commit] r8592 - in trunk/qgis/src: core plugins/grass

svn_qgis at osgeo.org svn_qgis at osgeo.org
Wed Jun 4 17:22:31 EDT 2008


Author: jef
Date: 2008-06-04 17:22:31 -0400 (Wed, 04 Jun 2008)
New Revision: 8592

Modified:
   trunk/qgis/src/core/qgsspatialrefsys.cpp
   trunk/qgis/src/plugins/grass/qgsgrassnewmapset.cpp
Log:
call OSRImportFromProj4() in locale "C" (fixes #1120)


Modified: trunk/qgis/src/core/qgsspatialrefsys.cpp
===================================================================
--- trunk/qgis/src/core/qgsspatialrefsys.cpp	2008-06-04 19:52:25 UTC (rev 8591)
+++ trunk/qgis/src/core/qgsspatialrefsys.cpp	2008-06-04 21:22:31 UTC (rev 8592)
@@ -228,7 +228,10 @@
     mGeoFlag = (geo == 0 ? false : true);
     setMapUnits();
     mIsValidFlag = true;
-    OSRImportFromProj4( mSRS, (const char *)proj4String.toLatin1() );
+    const char *oldlocale = setlocale(LC_ALL, NULL);
+    setlocale(LC_ALL, "C");
+    OSRImportFromProj4( mSRS, proj4String.toLatin1().constData() );
+    setlocale(LC_ALL, oldlocale);
   }
   else
   {
@@ -408,7 +411,10 @@
       if (!myRecord.empty())
       {
         // Success!  We have found the proj string by swapping the lat_1 and lat_2
-        OSRImportFromProj4(mSRS, (const char *)theProj4StringModified.toLatin1() );
+        const char *oldlocale = setlocale(LC_ALL, NULL);
+        setlocale(LC_ALL, "C");
+        OSRImportFromProj4(mSRS, theProj4StringModified.toLatin1().constData() );
+        setlocale(LC_ALL, oldlocale); 
         mySrsId=myRecord["srs_id"].toLong();
         QgsDebugMsg("QgsSpatialRefSys::createFromProj4 proj4string match search for srsid returned srsid: " + QString::number(mySrsId));
         if (mySrsId > 0)
@@ -658,7 +664,10 @@
 }
 void QgsSpatialRefSys::setProj4String (QString theProj4String)
 {
-  mIsValidFlag = OSRImportFromProj4(mSRS, (const char *)theProj4String.toLatin1())==OGRERR_NONE;
+  const char *oldlocale = setlocale(LC_ALL, NULL);
+  setlocale(LC_ALL, "C");
+  mIsValidFlag = OSRImportFromProj4(mSRS, theProj4String.toLatin1().constData() )==OGRERR_NONE;
+  setlocale(LC_ALL, oldlocale);
 }
 void QgsSpatialRefSys::setGeographicFlag (bool theGeoFlag)
 {

Modified: trunk/qgis/src/plugins/grass/qgsgrassnewmapset.cpp
===================================================================
--- trunk/qgis/src/plugins/grass/qgsgrassnewmapset.cpp	2008-06-04 19:52:25 UTC (rev 8591)
+++ trunk/qgis/src/plugins/grass/qgsgrassnewmapset.cpp	2008-06-04 21:22:31 UTC (rev 8592)
@@ -473,7 +473,12 @@
     OGRSpatialReferenceH hSRS = NULL;
     hSRS = OSRNewSpatialReference(NULL);
     int errcode;
-    if ( (errcode = OSRImportFromProj4(hSRS, proj4.ascii())) != OGRERR_NONE) {
+    const char *oldlocale = setlocale(LC_ALL, NULL);
+    setlocale(LC_ALL, "C");
+    errcode = OSRImportFromProj4(hSRS, proj4.ascii());
+    setlocale(LC_ALL, oldlocale);
+    if ( errcode!=OGRERR_NONE )
+    {
       std::cerr << "OGR can't parse PROJ.4-style parameter string:\n" << proj4.ascii()
         << "\nOGR Error code was " << errcode << std::endl;
 



More information about the QGIS-commit mailing list