From 046a3f5d879d489affdb3ae98329020db209dc6a Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Sun, 28 Jul 2024 16:08:13 +0100 Subject: crashtesting: fix ImplCalcMapResolution assert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit seen on converting moz1297206-1.svg to odg Change-Id: I56c424eb76f55a52522d519a0faa6df30b017c82 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/171142 Reviewed-by: Caolán McNamara Tested-by: Jenkins --- drawinglayer/source/processor2d/vclprocessor2d.cxx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'drawinglayer/source') diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx index b783bdc69723..a99032e7683e 100644 --- a/drawinglayer/source/processor2d/vclprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx @@ -434,14 +434,22 @@ void VclProcessor2D::RenderTextSimpleOrDecoratedPortionPrimitive2D( MapMode aMapMode = mpOutputDevice->GetMapMode(); aMapMode.SetScaleX(aMapMode.GetScaleX() * nFontScalingFixX); aMapMode.SetScaleY(aMapMode.GetScaleY() * nFontScalingFixY); - Point origin = aMapMode.GetOrigin(); - mpOutputDevice->Push(vcl::PushFlags::MAPMODE); - mpOutputDevice->SetRelativeMapMode(aMapMode); - bChangeMapMode = true; + const bool bValidScaling + = aMapMode.GetScaleX().IsValid() && aMapMode.GetScaleY().IsValid(); + if (!bValidScaling) + SAL_WARN("drawinglayer", "skipping invalid scaling"); + else + { + Point origin = aMapMode.GetOrigin(); + + mpOutputDevice->Push(vcl::PushFlags::MAPMODE); + mpOutputDevice->SetRelativeMapMode(aMapMode); + bChangeMapMode = true; - aPointX = (aPointX + origin.X()) / nFontScalingFixX - origin.X(); - aPointY = (aPointY + origin.Y()) / nFontScalingFixY - origin.Y(); + aPointX = (aPointX + origin.X()) / nFontScalingFixX - origin.X(); + aPointY = (aPointY + origin.Y()) / nFontScalingFixY - origin.Y(); + } } } -- cgit