Skip to content

Commit 49ce2fa

Browse files
committed
[BUGFIX][QGIS Server] To avoid infinite loop in layer creation
Insert layer in registry and cache before addValueRelationLayersForLayer
1 parent ceb86c7 commit 49ce2fa

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/server/qgsserverprojectparser.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ QgsMapLayer* QgsServerProjectParser::createLayerFromElement( const QDomElement&
231231

232232
if ( layer )
233233
{
234+
if ( !QgsMapLayerRegistry::instance()->mapLayer( id ) )
235+
QgsMapLayerRegistry::instance()->addMapLayer( layer, false, false );
234236
if ( layer->type() == QgsMapLayer::VectorLayer )
235237
addValueRelationLayersForLayer( dynamic_cast<QgsVectorLayer *>( layer ) );
236238

@@ -270,11 +272,9 @@ QgsMapLayer* QgsServerProjectParser::createLayerFromElement( const QDomElement&
270272
layer->readLayerXML( const_cast<QDomElement&>( elem ) ); //should be changed to const in QgsMapLayer
271273
//layer->setLayerName( layerName( elem ) );
272274

273-
if ( layer->type() == QgsMapLayer::VectorLayer )
274-
{
275-
addValueRelationLayersForLayer( dynamic_cast<QgsVectorLayer *>( layer ) );
276-
}
277-
275+
// Insert layer in registry and cache before addValueRelationLayersForLayer
276+
if ( !QgsMapLayerRegistry::instance()->mapLayer( id ) )
277+
QgsMapLayerRegistry::instance()->addMapLayer( layer, false, false );
278278
if ( useCache )
279279
{
280280
QgsMSLayerCache::instance()->insertLayer( absoluteUri, id, layer, mProjectPath );
@@ -284,6 +284,11 @@ QgsMapLayer* QgsServerProjectParser::createLayerFromElement( const QDomElement&
284284
//todo: fixme
285285
//mLayersToRemove.push_back( layer );
286286
}
287+
288+
if ( layer->type() == QgsMapLayer::VectorLayer )
289+
{
290+
addValueRelationLayersForLayer( dynamic_cast<QgsVectorLayer *>( layer ) );
291+
}
287292
}
288293
return layer;
289294
}

0 commit comments

Comments
 (0)