Skip to content

Commit

Permalink
Fix memory corruption (free address of reference) in server
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jan 27, 2017
1 parent bfdd9dc commit 8d9357a
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 8 deletions.
13 changes: 6 additions & 7 deletions src/server/qgswmsconfigparser.cpp
Expand Up @@ -342,7 +342,7 @@ QStringList QgsWmsConfigParser::addHighlightLayers( const QMap<QString, QString>
labelString = labelSplit.at( i );
}

QScopedPointer<QgsVectorLayer> layer( createHighlightLayer( i, crsString, &geom, labelString, labelSizeSplit, labelColorSplit, labelWeightSplit, labelFontSplit,
QScopedPointer<QgsVectorLayer> layer( createHighlightLayer( i, crsString, geom, labelString, labelSizeSplit, labelColorSplit, labelWeightSplit, labelFontSplit,
labelBufferSizeSplit, labelBufferColorSplit ) );
if ( !layer.data() )
{
Expand All @@ -357,7 +357,7 @@ QStringList QgsWmsConfigParser::addHighlightLayers( const QMap<QString, QString>
return highlightLayers;
}

QgsVectorLayer* QgsWmsConfigParser::createHighlightLayer( int i, const QString& crsString, QgsGeometry* geom, const QString& labelString, const QStringList& labelSizeSplit, const QStringList& labelColorSplit,
QgsVectorLayer* QgsWmsConfigParser::createHighlightLayer( int i, const QString& crsString, const QgsGeometry& geom, const QString& labelString, const QStringList& labelSizeSplit, const QStringList& labelColorSplit,
const QStringList& labelWeightSplit, const QStringList& labelFontSplit, const QStringList& labelBufferSizeSplit,
const QStringList& labelBufferColorSplit )
{
Expand All @@ -366,8 +366,8 @@ QgsVectorLayer* QgsWmsConfigParser::createHighlightLayer( int i, const QString&
return 0;
}

QgsWkbTypes::GeometryType geomType = geom->type();
QString typeName = QString( QgsWkbTypes::displayString( geom->wkbType() ) ).replace( QLatin1String( "WKB" ), QLatin1String( "" ) );
QgsWkbTypes::GeometryType geomType = geom.type();
QString typeName = QString( QgsWkbTypes::displayString( geom.wkbType() ) ).replace( QLatin1String( "WKB" ), QLatin1String( "" ) );
QString url = typeName + "?crs=" + crsString;
if ( !labelString.isEmpty() )
{
Expand All @@ -391,7 +391,7 @@ QgsVectorLayer* QgsWmsConfigParser::createHighlightLayer( int i, const QString&
fet.setAttribute( 0, labelString );
if ( geomType == QgsWkbTypes::PolygonGeometry )
{
QgsGeometry point = geom->pointOnSurface();
QgsGeometry point = geom.pointOnSurface();
if ( point )
{
QgsPoint pt = point.asPoint();
Expand Down Expand Up @@ -472,8 +472,7 @@ QgsVectorLayer* QgsWmsConfigParser::createHighlightLayer( int i, const QString&
layer->setCustomProperty( QStringLiteral( "labeling/placement" ), placement );
}

fet.setGeometry( *geom );
delete geom;
fet.setGeometry( geom );
layer->dataProvider()->addFeatures( QgsFeatureList() << fet );
return layer;
}
Expand Down
2 changes: 1 addition & 1 deletion src/server/qgswmsconfigparser.h
Expand Up @@ -158,7 +158,7 @@ class SERVER_EXPORT QgsWmsConfigParser
QStringList& labelFont, QStringList& labelSize, QStringList& labelWeight, QStringList& labelColor,
QStringList& labelBufferColor, QStringList &labelBufferSize );

static QgsVectorLayer* createHighlightLayer( int i, const QString& crsString, QgsGeometry* geom, const QString& labelString, const QStringList& labelSizeSplit, const QStringList& labelColorSplit,
static QgsVectorLayer* createHighlightLayer( int i, const QString& crsString, const QgsGeometry& geom, const QString& labelString, const QStringList& labelSizeSplit, const QStringList& labelColorSplit,
const QStringList& labelWeightSplit, const QStringList& labelFontSplit, const QStringList& labelBufferSizeSplit,
const QStringList& labelBufferColorSplit );

Expand Down

0 comments on commit 8d9357a

Please sign in to comment.