[QGIS Commit] r13257 - trunk/qgis/src/core
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Apr 5 21:38:37 EDT 2010
Author: jef
Date: 2010-04-05 21:38:36 -0400 (Mon, 05 Apr 2010)
New Revision: 13257
Modified:
trunk/qgis/src/core/qgsvectorlayer.cpp
Log:
fix crash when added features were deleted
Modified: trunk/qgis/src/core/qgsvectorlayer.cpp
===================================================================
--- trunk/qgis/src/core/qgsvectorlayer.cpp 2010-04-05 22:42:59 UTC (rev 13256)
+++ trunk/qgis/src/core/qgsvectorlayer.cpp 2010-04-06 01:38:36 UTC (rev 13257)
@@ -70,7 +70,6 @@
#include "qgsvectordataprovider.h"
#include "qgsvectorlayerundocommand.h"
#include "qgsvectoroverlay.h"
-#include "qgslogger.h"
#include "qgsmaplayerregistry.h"
#include "qgsclipper.h"
#include "qgsproject.h"
@@ -365,7 +364,7 @@
catch ( QgsCsException &e )
{
Q_UNUSED( e );
- QgsLogger::critical( "Error projecting label locations, caught in " + QString( __FILE__ ) + ", line " + QString( __LINE__ ) );
+ QgsDebugMsg( "Error projecting label locations" );
}
if ( mRendererV2 )
@@ -373,9 +372,7 @@
mRendererV2->stopRender( rendererContext );
}
-#ifdef QGISDEBUG
- QgsLogger::debug( "Total features processed", featureCount, 1, __FILE__, __FUNCTION__, __LINE__ );
-#endif
+ QgsDebugMsg( QString( "Total features processed %1" ).arg( featureCount ) );
// XXX Something in our draw event is triggering an additional draw event when resizing [TE 01/26/06]
// XXX Calling this will begin processing the next draw event causing image havoc and recursion crashes.
@@ -768,10 +765,8 @@
}
catch ( const QgsCsException &cse )
{
- QString msg( "Failed to transform a point while drawing a feature of type '"
- + fet.typeName() + "'. Ignoring this feature." );
- msg += cse.what();
- QgsLogger::warning( msg );
+ QgsDebugMsg( QString( "Failed to transform a point while drawing a feature of type '%1'. Ignoring this feature. %2" )
+ .arg( fet.typeName() ).arg( cse.what() ) );
}
#ifndef Q_WS_MAC
++featureCount;
@@ -898,10 +893,8 @@
}
catch ( const QgsCsException &cse )
{
- QString msg( "Failed to transform a point while drawing a feature of type '"
- + fet.typeName() + "'. Ignoring this feature." );
- msg += cse.what();
- QgsLogger::warning( msg );
+ QgsDebugMsg( QString( "Failed to transform a point while drawing a feature of type '%1'. Ignoring this feature. %2" )
+ .arg( fet.typeName() ).arg( cse.what() ) );
}
#ifndef Q_WS_MAC
++featureCount;
@@ -1090,16 +1083,14 @@
}
catch ( QgsCsException &cse )
{
- QString msg( "Failed to transform a point while drawing a feature of type '"
- + fet.typeName() + "'. Rendering stopped." );
- msg += cse.what();
- QgsLogger::warning( msg );
+ QgsDebugMsg( QString( "Failed to transform a point while drawing a feature of type '%1'. Rendering stopped. %2" )
+ .arg( fet.typeName() ).arg( cse.what() ) );
return false;
}
}
else
{
- QgsLogger::warning( "QgsRenderer is null in QgsVectorLayer::draw()" );
+ QgsDebugMsg( "QgsRenderer is null" );
}
if ( mEditable )
@@ -1392,18 +1383,18 @@
{
if ( !mDataProvider )
{
- QgsLogger::warning( " QgsVectorLayer::featureCount() invoked with null mDataProvider" );
+ QgsDebugMsg( "invoked with null mDataProvider" );
return 0;
}
return mDataProvider->featureCount();
-} // QgsVectorLayer::featureCount
+}
long QgsVectorLayer::updateFeatureCount() const
{
if ( !mDataProvider )
{
- QgsLogger::warning( " QgsVectorLayer::updateFeatureCount() invoked with null mDataProvider" );
+ QgsDebugMsg( "invoked with null mDataProvider" );
return 0;
}
return mDataProvider->updateFeatureCount();
@@ -1414,7 +1405,7 @@
mLayerExtent.setMinimal();
if ( !mDataProvider )
- QgsLogger::warning( " QgsVectorLayer::updateExtents() invoked with null mDataProvider" );
+ QgsDebugMsg( "invoked with null mDataProvider" );
if ( mDeletedFeatureIds.isEmpty() && mChangedGeometries.isEmpty() )
{
@@ -1461,7 +1452,7 @@
{
if ( ! mDataProvider )
{
- QgsLogger::warning( " QgsVectorLayer::subsetString() invoked with null mDataProvider" );
+ QgsDebugMsg( "invoked with null mDataProvider" );
return 0;
}
return mDataProvider->subsetString();
@@ -1471,7 +1462,7 @@
{
if ( ! mDataProvider )
{
- QgsLogger::warning( " QgsVectorLayer::setSubsetString() invoked with null mDataProvider" );
+ QgsDebugMsg( "invoked with null mDataProvider" );
return false;
}
@@ -1611,7 +1602,7 @@
}
if ( !found )
- QgsLogger::warning( QString( "No attributes for the added feature %1 found" ).arg( f.id() ) );
+ QgsDebugMsg( QString( "No attributes for the added feature %1 found" ).arg( f.id() ) );
}
else
{
@@ -1712,7 +1703,7 @@
}
if ( !found )
- QgsLogger::warning( QString( "No attributes for the added feature %1 found" ).arg( f.id() ) );
+ QgsDebugMsg( QString( "No attributes for the added feature %1 found" ).arg( f.id() ) );
}
else
{
@@ -3379,23 +3370,24 @@
//
if ( mAddedFeatures.size() > 0 )
{
- for ( QgsFeatureList::iterator iter = mAddedFeatures.begin(); iter != mAddedFeatures.end(); ++iter )
+ for ( int i = 0; i < mAddedFeatures.size(); i++ )
{
- if ( mDeletedFeatureIds.contains( iter->id() ) )
+ QgsFeature &f = mAddedFeatures[i];
+
+ if ( mDeletedFeatureIds.contains( f.id() ) )
{
- mDeletedFeatureIds.remove( iter->id() );
+ mDeletedFeatureIds.remove( f.id() );
- if ( mChangedGeometries.contains( iter->id() ) )
- mChangedGeometries.remove( iter->id() );
+ if ( mChangedGeometries.contains( f.id() ) )
+ mChangedGeometries.remove( f.id() );
- mAddedFeatures.erase( iter );
-
+ mAddedFeatures.removeAt( i-- );
continue;
}
- if ( mChangedGeometries.contains( iter->id() ) )
+ if ( mChangedGeometries.contains( f.id() ) )
{
- iter->setGeometry( mChangedGeometries.take( iter->id() ) );
+ f.setGeometry( mChangedGeometries.take( f.id() ) );
}
}
More information about the QGIS-commit
mailing list