From 38ae1708a8207f7657098f2282a6343fec255152 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Sat, 30 Nov 2019 17:58:26 +0100 Subject: [PATCH] Check for empty rect before calling setExtent this prevents an infinite recursion from setCenter Fixes #33168 --- src/gui/qgsmapcanvas.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/gui/qgsmapcanvas.cpp b/src/gui/qgsmapcanvas.cpp index f471c3fd77b..a5ca9c903b4 100644 --- a/src/gui/qgsmapcanvas.cpp +++ b/src/gui/qgsmapcanvas.cpp @@ -901,16 +901,20 @@ bool QgsMapCanvas::setReferencedExtent( const QgsReferencedRectangle &extent ) void QgsMapCanvas::setCenter( const QgsPointXY ¢er ) { - QgsRectangle r = mapSettings().extent(); - double x = center.x(); - double y = center.y(); - setExtent( - QgsRectangle( - x - r.width() / 2.0, y - r.height() / 2.0, - x + r.width() / 2.0, y + r.height() / 2.0 - ), - true + const QgsRectangle r = mapSettings().extent(); + const double x = center.x(); + const double y = center.y(); + const QgsRectangle rect( + x - r.width() / 2.0, y - r.height() / 2.0, + x + r.width() / 2.0, y + r.height() / 2.0 ); + if ( ! rect.isEmpty() ) + { + setExtent( + rect, + true + ); + } } // setCenter QgsPointXY QgsMapCanvas::center() const