diff --git a/src/mapserver/qgscapabilitiescache.cpp b/src/mapserver/qgscapabilitiescache.cpp index b83122813b7..3620606a586 100644 --- a/src/mapserver/qgscapabilitiescache.cpp +++ b/src/mapserver/qgscapabilitiescache.cpp @@ -40,5 +40,11 @@ const QDomDocument* QgsCapabilitiesCache::searchCapabilitiesDocument( const QStr void QgsCapabilitiesCache::insertCapabilitiesDocument( const QString& configFilePath, const QDomDocument* doc ) { + if( mCachedCapabilities.size() > 40 ) + { + //remove another cache entry to avoid memory problems + QHash::iterator capIt = mCachedCapabilities.begin(); + mCachedCapabilities.erase( capIt ); + } mCachedCapabilities.insert( configFilePath, doc->cloneNode().toDocument() ); } diff --git a/src/mapserver/qgsconfigcache.cpp b/src/mapserver/qgsconfigcache.cpp index f5aa0889f4b..ef3e65b7a1a 100644 --- a/src/mapserver/qgsconfigcache.cpp +++ b/src/mapserver/qgsconfigcache.cpp @@ -61,12 +61,9 @@ QgsConfigParser* QgsConfigCache::insertConfiguration( const QString& filePath ) { if ( mCachedConfigurations.size() > 40 ) { - //remove 10 elements to avoid memory problems + //remove a cache entry to avoid memory problems QHash::iterator configIt = mCachedConfigurations.begin(); - for ( int i = 0; i < 10; ++i ) - { - configIt = mCachedConfigurations.erase( configIt ); - } + mCachedConfigurations.erase( configIt ); } //first open file