[symbology] Fix potential crash in data defined symbol rotation

This commit is contained in:
Nyall Dawson 2015-05-21 22:34:53 +10:00
parent d9f54c42fc
commit d62794de5d

View File

@ -66,7 +66,7 @@ QgsDataDefined* scaleWholeSymbol( double scaleFactorX, double scaleFactorY, cons
scaledDD->setExpressionString(
( scaleFactorX ? "tostring(" + QString::number( scaleFactorX ) + "*(" + exprString + "))" : "'0'" ) +
"|| ',' || " +
( scaleFactorY ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : "'0'" ));
( scaleFactorY ? "tostring(" + QString::number( scaleFactorY ) + "*(" + exprString + "))" : "'0'" ) );
return scaledDD;
}
@ -631,13 +631,13 @@ QgsDataDefined QgsMarkerSymbolV2::dataDefinedAngle() const
if ( qgsDoubleNear( layer->angle(), symbolRotation ) )
{
if ( *layerAngleDD != *symbolDD )
if ( !layerAngleDD || *layerAngleDD != *symbolDD )
return QgsDataDefined();
}
else
{
QScopedPointer< QgsDataDefined > rotatedDD( rotateWholeSymbol( layer->angle() - symbolRotation, *symbolDD ) );
if ( *layerAngleDD != *( rotatedDD.data() ) )
if ( !layerAngleDD || *layerAngleDD != *( rotatedDD.data() ) )
return QgsDataDefined();
}
}
@ -757,7 +757,6 @@ QgsDataDefined QgsMarkerSymbolV2::dataDefinedSize() const
return QgsDataDefined();
}
QScopedPointer< QgsDataDefined > scaledOffsetDD( scaleWholeSymbol( layer->offset().x() / symbolSize, layer->offset().y() / symbolSize, *symbolDD ) );
if ( layerOffsetDD && *layerOffsetDD != *( scaledOffsetDD.data() ) )
return QgsDataDefined();