Skip to content

Commit

Permalink
QgsRectangle::intersect should use a reference, not a pointer
Browse files Browse the repository at this point in the history
We never call this method using nullptrs, so there's no need
for this to be a pointer argument in the first place. And
having it a pointer encourages leaky code, such as the
leak this commit fixes in server.
  • Loading branch information
nyalldawson committed Jun 17, 2018
1 parent 59fa2ce commit 4fb9091
Show file tree
Hide file tree
Showing 18 changed files with 25 additions and 25 deletions.
2 changes: 1 addition & 1 deletion python/core/auto_generated/geometry/qgsrectangle.sip.in
Expand Up @@ -207,7 +207,7 @@ Gets rectangle enlarged by buffer.
.. versionadded:: 3.0
%End

QgsRectangle intersect( const QgsRectangle *rect ) const;
QgsRectangle intersect( const QgsRectangle &rect ) const;
%Docstring
Returns the intersection with the given rectangle.
%End
Expand Down
4 changes: 2 additions & 2 deletions src/3d/terrain/qgsdemterraintileloader_p.cpp
Expand Up @@ -199,7 +199,7 @@ int QgsDemHeightMapGenerator::render( int x, int y, int z )
extent.grow( mapUnitsPerPixel / 2 );
// but make sure not to go beyond the full extent (returns invalid values)
QgsRectangle fullExtent = mTilingScheme.tileToExtent( 0, 0, 0 );
extent = extent.intersect( &fullExtent );
extent = extent.intersect( fullExtent );

JobData jd;
jd.jobId = ++mLastJobId;
Expand All @@ -225,7 +225,7 @@ QByteArray QgsDemHeightMapGenerator::renderSynchronously( int x, int y, int z )
extent.grow( mapUnitsPerPixel / 2 );
// but make sure not to go beyond the full extent (returns invalid values)
QgsRectangle fullExtent = mTilingScheme.tileToExtent( 0, 0, 0 );
extent = extent.intersect( &fullExtent );
extent = extent.intersect( fullExtent );

QgsRasterBlock *block = mDtm->dataProvider()->block( 1, extent, mResolution, mResolution );

Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsalgorithmzonalhistogram.cpp
Expand Up @@ -129,7 +129,7 @@ QVariantMap QgsZonalHistogramAlgorithm::processAlgorithm( const QVariantMap &par
}

QgsGeometry featureGeometry = f.geometry();
QgsRectangle featureRect = featureGeometry.boundingBox().intersect( &mRasterExtent );
QgsRectangle featureRect = featureGeometry.boundingBox().intersect( mRasterExtent );
if ( featureRect.isEmpty() )
{
current++;
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/processing/qgsrasteranalysisutils.cpp
Expand Up @@ -27,7 +27,7 @@ void QgsRasterAnalysisUtils::cellInfoForBBox( const QgsRectangle &rasterBBox, co
int &nCellsX, int &nCellsY, int rasterWidth, int rasterHeight, QgsRectangle &rasterBlockExtent )
{
//get intersecting bbox
QgsRectangle intersectBox = rasterBBox.intersect( &featureBBox );
QgsRectangle intersectBox = rasterBBox.intersect( featureBBox );
if ( intersectBox.isEmpty() )
{
nCellsX = 0;
Expand Down
2 changes: 1 addition & 1 deletion src/analysis/vector/qgszonalstatistics.cpp
Expand Up @@ -243,7 +243,7 @@ int QgsZonalStatistics::calculateStatistics( QgsFeedback *feedback )
}
QgsGeometry featureGeometry = f.geometry();

QgsRectangle featureRect = featureGeometry.boundingBox().intersect( &rasterBBox );
QgsRectangle featureRect = featureGeometry.boundingBox().intersect( rasterBBox );
if ( featureRect.isEmpty() )
{
++featureCounter;
Expand Down
2 changes: 1 addition & 1 deletion src/core/geometry/qgsbox3d.cpp
Expand Up @@ -77,7 +77,7 @@ void QgsBox3d::normalize()

QgsBox3d QgsBox3d::intersect( const QgsBox3d &other ) const
{
QgsRectangle intersect2d = mBounds2d.intersect( &( other.mBounds2d ) );
QgsRectangle intersect2d = mBounds2d.intersect( other.mBounds2d );
double zMin = std::max( mZmin, other.mZmin );
double zMax = std::min( mZmax, other.mZmax );
return QgsBox3d( intersect2d.xMinimum(), intersect2d.yMinimum(), zMin,
Expand Down
12 changes: 6 additions & 6 deletions src/core/geometry/qgsrectangle.cpp
Expand Up @@ -183,15 +183,15 @@ QgsRectangle QgsRectangle::buffered( double width ) const
return QgsRectangle( mXmin - width, mYmin - width, mXmax + width, mYmax + width );
}

QgsRectangle QgsRectangle::intersect( const QgsRectangle *rect ) const
QgsRectangle QgsRectangle::intersect( const QgsRectangle &rect ) const
{
QgsRectangle intersection = QgsRectangle();
if ( rect && intersects( *rect ) )
if ( intersects( rect ) )
{
intersection.setXMinimum( mXmin > rect->xMinimum() ? mXmin : rect->xMinimum() );
intersection.setXMaximum( mXmax < rect->xMaximum() ? mXmax : rect->xMaximum() );
intersection.setYMinimum( mYmin > rect->yMinimum() ? mYmin : rect->yMinimum() );
intersection.setYMaximum( mYmax < rect->yMaximum() ? mYmax : rect->yMaximum() );
intersection.setXMinimum( mXmin > rect.xMinimum() ? mXmin : rect.xMinimum() );
intersection.setXMaximum( mXmax < rect.xMaximum() ? mXmax : rect.xMaximum() );
intersection.setYMinimum( mYmin > rect.yMinimum() ? mYmin : rect.yMinimum() );
intersection.setYMaximum( mYmax < rect.yMaximum() ? mYmax : rect.yMaximum() );
}
return intersection;
}
Expand Down
2 changes: 1 addition & 1 deletion src/core/geometry/qgsrectangle.h
Expand Up @@ -201,7 +201,7 @@ class CORE_EXPORT QgsRectangle
/**
* Returns the intersection with the given rectangle.
*/
QgsRectangle intersect( const QgsRectangle *rect ) const;
QgsRectangle intersect( const QgsRectangle &rect ) const;

/**
* Returns true when rectangle intersects with other rectangle.
Expand Down
2 changes: 1 addition & 1 deletion src/core/raster/qgsrasterdataprovider.cpp
Expand Up @@ -59,7 +59,7 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b
}

// Read necessary extent only
QgsRectangle tmpExtent = extent().intersect( &boundingBox );
QgsRectangle tmpExtent = extent().intersect( boundingBox );

if ( tmpExtent.isEmpty() )
{
Expand Down
4 changes: 2 additions & 2 deletions src/core/raster/qgsrasterinterface.cpp
Expand Up @@ -51,7 +51,7 @@ void QgsRasterInterface::initStatistics( QgsRasterBandStats &statistics,
}
else
{
finalExtent = extent().intersect( &boundingBox );
finalExtent = extent().intersect( boundingBox );
}
statistics.extent = finalExtent;

Expand Down Expand Up @@ -295,7 +295,7 @@ void QgsRasterInterface::initHistogram( QgsRasterHistogram &histogram,
}
else
{
finalExtent = extent().intersect( &boundingBox );
finalExtent = extent().intersect( boundingBox );
}
histogram.extent = finalExtent;

Expand Down
2 changes: 1 addition & 1 deletion src/core/raster/qgsrasterlayerrenderer.cpp
Expand Up @@ -134,7 +134,7 @@ QgsRasterLayerRenderer::QgsRasterLayerRenderer( QgsRasterLayer *layer, QgsRender
}

// clip raster extent to view extent
QgsRectangle myRasterExtent = myProjectedViewExtent.intersect( &myProjectedLayerExtent );
QgsRectangle myRasterExtent = myProjectedViewExtent.intersect( myProjectedLayerExtent );
if ( myRasterExtent.isEmpty() )
{
QgsDebugMsg( "draw request outside view extent." );
Expand Down
2 changes: 1 addition & 1 deletion src/core/raster/qgsrasterprojector.cpp
Expand Up @@ -233,7 +233,7 @@ void ProjectorData::calcSrcExtent()
// Expand a bit to avoid possible approx coords falling out because of representation error?

// Combine with maximum source extent
mSrcExtent = mSrcExtent.intersect( &mExtent );
mSrcExtent = mSrcExtent.intersect( mExtent );

// If mMaxSrcXRes, mMaxSrcYRes are defined (fixed src resolution)
// align extent to src resolution to avoid jumping of reprojected pixels
Expand Down
2 changes: 1 addition & 1 deletion src/gui/attributetable/qgsattributetablefiltermodel.cpp
Expand Up @@ -447,7 +447,7 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
QgsFeatureRequest r( masterModel()->request() );
if ( !r.filterRect().isNull() )
{
r.setFilterRect( r.filterRect().intersect( &rect ) );
r.setFilterRect( r.filterRect().intersect( rect ) );
}
else
{
Expand Down
2 changes: 1 addition & 1 deletion src/providers/gdal/qgsgdalprovider.cpp
Expand Up @@ -691,7 +691,7 @@ void QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pi
}
#endif

QgsRectangle myRasterExtent = extent.intersect( &mExtent );
QgsRectangle myRasterExtent = extent.intersect( mExtent );
if ( myRasterExtent.isEmpty() )
{
QgsDebugMsg( "draw request outside view extent." );
Expand Down
2 changes: 1 addition & 1 deletion src/providers/postgres/qgspostgresfeatureiterator.cpp
Expand Up @@ -429,7 +429,7 @@ QString QgsPostgresFeatureIterator::whereClauseRect()
QgsRectangle rect = mFilterRect;
if ( mSource->mSpatialColType == SctGeography )
{
rect = QgsRectangle( -180.0, -90.0, 180.0, 90.0 ).intersect( &rect );
rect = QgsRectangle( -180.0, -90.0, 180.0, 90.0 ).intersect( rect );
}

if ( !rect.isFinite() )
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wfs/qgswfsgetfeature.cpp
Expand Up @@ -1062,7 +1062,7 @@ namespace QgsWfs
}
}
// EPSG:4326 max extent is -180, -90, 180, 90
rect = new QgsRectangle( rect->intersect( new QgsRectangle( -180.0, -90.0, 180.0, 90.0 ) ) );
rect = new QgsRectangle( rect->intersect( QgsRectangle( -180.0, -90.0, 180.0, 90.0 ) ) );

fcString = QStringLiteral( "{\"type\": \"FeatureCollection\",\n" );
fcString += " \"bbox\": [ " + qgsDoubleToString( rect->xMinimum(), prec ) + ", " + qgsDoubleToString( rect->yMinimum(), prec ) + ", " + qgsDoubleToString( rect->xMaximum(), prec ) + ", " + qgsDoubleToString( rect->yMaximum(), prec ) + "],\n";
Expand Down
2 changes: 1 addition & 1 deletion src/server/services/wfs/qgswfsutils.cpp
Expand Up @@ -203,7 +203,7 @@ namespace QgsWfs
}
else
{
request.setFilterRect( request.filterRect().intersect( &childRequest.filterRect() ) );
request.setFilterRect( request.filterRect().intersect( childRequest.filterRect() ) );
}
}
else
Expand Down
2 changes: 1 addition & 1 deletion tests/src/core/testqgsrectangle.cpp
Expand Up @@ -109,7 +109,7 @@ void TestQgsRectangle::manipulate()
// Check intersection
QVERIFY( rect2.intersects( rect1 ) );
// Create intersection
rect3 = rect2.intersect( &rect1 );
rect3 = rect2.intersect( rect1 );
// Check width and height (real numbers, careful)
QCOMPARE( rect3.width(), 1.0 );
QCOMPARE( rect3.height(), 1.0 );
Expand Down

0 comments on commit 4fb9091

Please sign in to comment.