Skip to content

Commit 8082762

Browse files
committedOct 25, 2016
[BUGFIX][QGIS Server] Do not cache invalid layer
After readLayerXml, the server stored layers in cache and in registry without verifying validity.
1 parent 009c0ea commit 8082762

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed
 

‎src/server/qgshostedrdsbuilder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ QgsMapLayer* QgsHostedRDSBuilder::createMapLayer( const QDomElement& elem,
6262
{
6363
rl = qobject_cast<QgsRasterLayer*>( QgsMSLayerCache::instance()->searchLayer( uri, layerName ) );
6464
}
65-
if ( !rl )
65+
if ( !rl || !rl->isValid() )
6666
{
6767
QgsDebugMsg( "hostedrds layer not in cache, so create and insert it" );
6868
rl = new QgsRasterLayer( uri, layerNameFromUri( uri ) );

‎src/server/qgsserverprojectparser.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ QgsMapLayer* QgsServerProjectParser::createLayerFromElement( const QDomElement&
278278
layer->readLayerXML( const_cast<QDomElement&>( elem ) ); //should be changed to const in QgsMapLayer
279279
//layer->setLayerName( layerName( elem ) );
280280

281+
if ( !layer->isValid() )
282+
{
283+
return nullptr;
284+
}
281285
// Insert layer in registry and cache before addValueRelationLayersForLayer
282286
if ( !QgsMapLayerRegistry::instance()->mapLayer( id ) )
283287
QgsMapLayerRegistry::instance()->addMapLayer( layer, false, false );

0 commit comments

Comments
 (0)