Skip to content

Commit

Permalink
Merge pull request #8331 from rldhont/fix-server-wfs-force-multi-geom…
Browse files Browse the repository at this point in the history
…-gml-218

[Bugfix][Server][WFS] Segfault when converting geom to multi
  • Loading branch information
rldhont committed Oct 26, 2018
2 parents 75a170d + 81f4bdb commit daa650e
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions src/server/qgswfsserver.cpp
Expand Up @@ -2070,12 +2070,11 @@ QDomElement QgsWFSServer::createFeatureGML2( QgsFeature* feat, QDomDocument& doc
typeNameElement.setAttribute( "fid", mTypeName + "." + gmlId );
featureElement.appendChild( typeNameElement );

const QgsGeometry* geom = feat->constGeometry();
const QgsGeometry* cGeom = feat->constGeometry();
QgsGeometry *geom = new QgsGeometry( *cGeom );
if ( isMultiGeom && QgsWKBTypes::isSingleType( QGis::fromOldWkbType( geom->wkbType() ) ) )
{
QgsGeometry cloneGeom( *geom );
cloneGeom.convertToMultiType();
geom = &cloneGeom;
geom->convertToMultiType();
}
if ( geom && mWithGeom && mGeometryName != "NONE" )
{
Expand Down Expand Up @@ -2121,6 +2120,7 @@ QDomElement QgsWFSServer::createFeatureGML2( QgsFeature* feat, QDomDocument& doc
typeNameElement.appendChild( geomElem );
}
}
delete geom;

//read all attribute values from the feature
QgsAttributes featureAttributes = feat->attributes();
Expand Down Expand Up @@ -2160,12 +2160,12 @@ QDomElement QgsWFSServer::createFeatureGML3( QgsFeature* feat, QDomDocument& doc
typeNameElement.setAttribute( "gml:id", mTypeName + "." + gmlId );
featureElement.appendChild( typeNameElement );

const QgsGeometry* geom = feat->constGeometry();

const QgsGeometry* cGeom = feat->constGeometry();
QgsGeometry *geom = new QgsGeometry( *cGeom );
if ( isMultiGeom && QgsWKBTypes::isSingleType( QGis::fromOldWkbType( geom->wkbType() ) ) )
{
QgsGeometry cloneGeom( *geom );
cloneGeom.convertToMultiType();
geom = &cloneGeom;
geom->convertToMultiType();
}
if ( geom && mWithGeom && mGeometryName != "NONE" )
{
Expand Down Expand Up @@ -2211,6 +2211,7 @@ QDomElement QgsWFSServer::createFeatureGML3( QgsFeature* feat, QDomDocument& doc
typeNameElement.appendChild( geomElem );
}
}
delete geom;

//read all attribute values from the feature
QgsAttributes featureAttributes = feat->attributes();
Expand Down

0 comments on commit daa650e

Please sign in to comment.