[QGIS Commit] r12041 - in trunk/qgis/src: core providers/osm

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sun Nov 8 18:12:35 EST 2009


Author: wonder
Date: 2009-11-08 18:12:34 -0500 (Sun, 08 Nov 2009)
New Revision: 12041

Modified:
   trunk/qgis/src/core/qgsvectorlayer.cpp
   trunk/qgis/src/providers/osm/osmprovider.cpp
Log:
fix crash from #2067. anyway loading of osm layers with custom renderers doesn't work (and won't work because of technical limitations)


Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp	2009-11-08 23:10:48 UTC (rev 12040)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp	2009-11-08 23:12:34 UTC (rev 12041)
@@ -2232,6 +2232,11 @@
         // deal with unnecessary schema qualification to make v.in.ogr happy
         mDataSource = mDataProvider->dataSourceUri();
       }
+      else if ( mProviderKey == "osm" )
+      {
+        // make sure that the "observer" has been removed from URI to avoid crashes
+        mDataSource = mDataProvider->dataSourceUri();
+      }
 
       // label
       mLabel = new QgsLabel( mDataProvider->fields() );

Modified: trunk/qgis/src/providers/osm/osmprovider.cpp
===================================================================
--- trunk/qgis/src/providers/osm/osmprovider.cpp	2009-11-08 23:10:48 UTC (rev 12040)
+++ trunk/qgis/src/providers/osm/osmprovider.cpp	2009-11-08 23:12:34 UTC (rev 12041)
@@ -93,9 +93,25 @@
     }
     if ( propName == "observer" )
     {
+      // remove observer from the URI
+      // (because otherwise it would be saved into project file and would cause crashes)
+      QString newProps;
+      foreach ( QString p , props )
+      {
+        if (!p.startsWith("observer"))
+        {
+          if (!newProps.isEmpty())
+            newProps += "&";
+          newProps += p;
+        }
+      }
+      QString newUri = uri.left( fileNameEnd + 1 ) + newProps;
+      setDataSourceUri(newUri);
+
       ulong observerAddr = propValue.toULong();
       mInitObserver = ( QObject* ) observerAddr;
       mInitObserver->setProperty( "osm_state", QVariant( 1 ) );
+
     }
     if ( propName == "tag" )
     {



More information about the QGIS-commit mailing list