Skip to content

Commit 4fb9091

Browse files
committed
QgsRectangle::intersect should use a reference, not a pointer
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.
1 parent 59fa2ce commit 4fb9091

18 files changed

+25
-25
lines changed

python/core/auto_generated/geometry/qgsrectangle.sip.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ Gets rectangle enlarged by buffer.
207207
.. versionadded:: 3.0
208208
%End
209209

210-
QgsRectangle intersect( const QgsRectangle *rect ) const;
210+
QgsRectangle intersect( const QgsRectangle &rect ) const;
211211
%Docstring
212212
Returns the intersection with the given rectangle.
213213
%End

src/3d/terrain/qgsdemterraintileloader_p.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@ int QgsDemHeightMapGenerator::render( int x, int y, int z )
199199
extent.grow( mapUnitsPerPixel / 2 );
200200
// but make sure not to go beyond the full extent (returns invalid values)
201201
QgsRectangle fullExtent = mTilingScheme.tileToExtent( 0, 0, 0 );
202-
extent = extent.intersect( &fullExtent );
202+
extent = extent.intersect( fullExtent );
203203

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

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

src/analysis/processing/qgsalgorithmzonalhistogram.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ QVariantMap QgsZonalHistogramAlgorithm::processAlgorithm( const QVariantMap &par
129129
}
130130

131131
QgsGeometry featureGeometry = f.geometry();
132-
QgsRectangle featureRect = featureGeometry.boundingBox().intersect( &mRasterExtent );
132+
QgsRectangle featureRect = featureGeometry.boundingBox().intersect( mRasterExtent );
133133
if ( featureRect.isEmpty() )
134134
{
135135
current++;

src/analysis/processing/qgsrasteranalysisutils.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void QgsRasterAnalysisUtils::cellInfoForBBox( const QgsRectangle &rasterBBox, co
2727
int &nCellsX, int &nCellsY, int rasterWidth, int rasterHeight, QgsRectangle &rasterBlockExtent )
2828
{
2929
//get intersecting bbox
30-
QgsRectangle intersectBox = rasterBBox.intersect( &featureBBox );
30+
QgsRectangle intersectBox = rasterBBox.intersect( featureBBox );
3131
if ( intersectBox.isEmpty() )
3232
{
3333
nCellsX = 0;

src/analysis/vector/qgszonalstatistics.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ int QgsZonalStatistics::calculateStatistics( QgsFeedback *feedback )
243243
}
244244
QgsGeometry featureGeometry = f.geometry();
245245

246-
QgsRectangle featureRect = featureGeometry.boundingBox().intersect( &rasterBBox );
246+
QgsRectangle featureRect = featureGeometry.boundingBox().intersect( rasterBBox );
247247
if ( featureRect.isEmpty() )
248248
{
249249
++featureCounter;

src/core/geometry/qgsbox3d.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ void QgsBox3d::normalize()
7777

7878
QgsBox3d QgsBox3d::intersect( const QgsBox3d &other ) const
7979
{
80-
QgsRectangle intersect2d = mBounds2d.intersect( &( other.mBounds2d ) );
80+
QgsRectangle intersect2d = mBounds2d.intersect( other.mBounds2d );
8181
double zMin = std::max( mZmin, other.mZmin );
8282
double zMax = std::min( mZmax, other.mZmax );
8383
return QgsBox3d( intersect2d.xMinimum(), intersect2d.yMinimum(), zMin,

src/core/geometry/qgsrectangle.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -183,15 +183,15 @@ QgsRectangle QgsRectangle::buffered( double width ) const
183183
return QgsRectangle( mXmin - width, mYmin - width, mXmax + width, mYmax + width );
184184
}
185185

186-
QgsRectangle QgsRectangle::intersect( const QgsRectangle *rect ) const
186+
QgsRectangle QgsRectangle::intersect( const QgsRectangle &rect ) const
187187
{
188188
QgsRectangle intersection = QgsRectangle();
189-
if ( rect && intersects( *rect ) )
189+
if ( intersects( rect ) )
190190
{
191-
intersection.setXMinimum( mXmin > rect->xMinimum() ? mXmin : rect->xMinimum() );
192-
intersection.setXMaximum( mXmax < rect->xMaximum() ? mXmax : rect->xMaximum() );
193-
intersection.setYMinimum( mYmin > rect->yMinimum() ? mYmin : rect->yMinimum() );
194-
intersection.setYMaximum( mYmax < rect->yMaximum() ? mYmax : rect->yMaximum() );
191+
intersection.setXMinimum( mXmin > rect.xMinimum() ? mXmin : rect.xMinimum() );
192+
intersection.setXMaximum( mXmax < rect.xMaximum() ? mXmax : rect.xMaximum() );
193+
intersection.setYMinimum( mYmin > rect.yMinimum() ? mYmin : rect.yMinimum() );
194+
intersection.setYMaximum( mYmax < rect.yMaximum() ? mYmax : rect.yMaximum() );
195195
}
196196
return intersection;
197197
}

src/core/geometry/qgsrectangle.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ class CORE_EXPORT QgsRectangle
201201
/**
202202
* Returns the intersection with the given rectangle.
203203
*/
204-
QgsRectangle intersect( const QgsRectangle *rect ) const;
204+
QgsRectangle intersect( const QgsRectangle &rect ) const;
205205

206206
/**
207207
* Returns true when rectangle intersects with other rectangle.

src/core/raster/qgsrasterdataprovider.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ QgsRasterBlock *QgsRasterDataProvider::block( int bandNo, QgsRectangle const &b
5959
}
6060

6161
// Read necessary extent only
62-
QgsRectangle tmpExtent = extent().intersect( &boundingBox );
62+
QgsRectangle tmpExtent = extent().intersect( boundingBox );
6363

6464
if ( tmpExtent.isEmpty() )
6565
{

src/core/raster/qgsrasterinterface.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void QgsRasterInterface::initStatistics( QgsRasterBandStats &statistics,
5151
}
5252
else
5353
{
54-
finalExtent = extent().intersect( &boundingBox );
54+
finalExtent = extent().intersect( boundingBox );
5555
}
5656
statistics.extent = finalExtent;
5757

@@ -295,7 +295,7 @@ void QgsRasterInterface::initHistogram( QgsRasterHistogram &histogram,
295295
}
296296
else
297297
{
298-
finalExtent = extent().intersect( &boundingBox );
298+
finalExtent = extent().intersect( boundingBox );
299299
}
300300
histogram.extent = finalExtent;
301301

src/core/raster/qgsrasterlayerrenderer.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ QgsRasterLayerRenderer::QgsRasterLayerRenderer( QgsRasterLayer *layer, QgsRender
134134
}
135135

136136
// clip raster extent to view extent
137-
QgsRectangle myRasterExtent = myProjectedViewExtent.intersect( &myProjectedLayerExtent );
137+
QgsRectangle myRasterExtent = myProjectedViewExtent.intersect( myProjectedLayerExtent );
138138
if ( myRasterExtent.isEmpty() )
139139
{
140140
QgsDebugMsg( "draw request outside view extent." );

src/core/raster/qgsrasterprojector.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ void ProjectorData::calcSrcExtent()
233233
// Expand a bit to avoid possible approx coords falling out because of representation error?
234234

235235
// Combine with maximum source extent
236-
mSrcExtent = mSrcExtent.intersect( &mExtent );
236+
mSrcExtent = mSrcExtent.intersect( mExtent );
237237

238238
// If mMaxSrcXRes, mMaxSrcYRes are defined (fixed src resolution)
239239
// align extent to src resolution to avoid jumping of reprojected pixels

src/gui/attributetable/qgsattributetablefiltermodel.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -447,7 +447,7 @@ void QgsAttributeTableFilterModel::generateListOfVisibleFeatures()
447447
QgsFeatureRequest r( masterModel()->request() );
448448
if ( !r.filterRect().isNull() )
449449
{
450-
r.setFilterRect( r.filterRect().intersect( &rect ) );
450+
r.setFilterRect( r.filterRect().intersect( rect ) );
451451
}
452452
else
453453
{

src/providers/gdal/qgsgdalprovider.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ void QgsGdalProvider::readBlock( int bandNo, QgsRectangle const &extent, int pi
691691
}
692692
#endif
693693

694-
QgsRectangle myRasterExtent = extent.intersect( &mExtent );
694+
QgsRectangle myRasterExtent = extent.intersect( mExtent );
695695
if ( myRasterExtent.isEmpty() )
696696
{
697697
QgsDebugMsg( "draw request outside view extent." );

src/providers/postgres/qgspostgresfeatureiterator.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -429,7 +429,7 @@ QString QgsPostgresFeatureIterator::whereClauseRect()
429429
QgsRectangle rect = mFilterRect;
430430
if ( mSource->mSpatialColType == SctGeography )
431431
{
432-
rect = QgsRectangle( -180.0, -90.0, 180.0, 90.0 ).intersect( &rect );
432+
rect = QgsRectangle( -180.0, -90.0, 180.0, 90.0 ).intersect( rect );
433433
}
434434

435435
if ( !rect.isFinite() )

src/server/services/wfs/qgswfsgetfeature.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1062,7 +1062,7 @@ namespace QgsWfs
10621062
}
10631063
}
10641064
// EPSG:4326 max extent is -180, -90, 180, 90
1065-
rect = new QgsRectangle( rect->intersect( new QgsRectangle( -180.0, -90.0, 180.0, 90.0 ) ) );
1065+
rect = new QgsRectangle( rect->intersect( QgsRectangle( -180.0, -90.0, 180.0, 90.0 ) ) );
10661066

10671067
fcString = QStringLiteral( "{\"type\": \"FeatureCollection\",\n" );
10681068
fcString += " \"bbox\": [ " + qgsDoubleToString( rect->xMinimum(), prec ) + ", " + qgsDoubleToString( rect->yMinimum(), prec ) + ", " + qgsDoubleToString( rect->xMaximum(), prec ) + ", " + qgsDoubleToString( rect->yMaximum(), prec ) + "],\n";

src/server/services/wfs/qgswfsutils.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ namespace QgsWfs
203203
}
204204
else
205205
{
206-
request.setFilterRect( request.filterRect().intersect( &childRequest.filterRect() ) );
206+
request.setFilterRect( request.filterRect().intersect( childRequest.filterRect() ) );
207207
}
208208
}
209209
else

tests/src/core/testqgsrectangle.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void TestQgsRectangle::manipulate()
109109
// Check intersection
110110
QVERIFY( rect2.intersects( rect1 ) );
111111
// Create intersection
112-
rect3 = rect2.intersect( &rect1 );
112+
rect3 = rect2.intersect( rect1 );
113113
// Check width and height (real numbers, careful)
114114
QCOMPARE( rect3.width(), 1.0 );
115115
QCOMPARE( rect3.height(), 1.0 );

0 commit comments

Comments
 (0)