[Libreoffice-commits] core.git: vcl/source

Caolán McNamara caolanm at redhat.com
Sat Mar 18 17:10:54 UTC 2017


 vcl/source/gdi/svmconverter.cxx |   16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

New commits:
commit 7ceeae3823b0cf1496be1b0e191571bb463adc7f
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Mar 18 16:50:36 2017 +0000

    ofz: floating point exception in values close to zero
    
    Change-Id: Idd8c7d4dd42c63f4f4a67ba61b9f3760ec04f2f1

diff --git a/vcl/source/gdi/svmconverter.cxx b/vcl/source/gdi/svmconverter.cxx
index edd844df4749..a17c0cb63ddf 100644
--- a/vcl/source/gdi/svmconverter.cxx
+++ b/vcl/source/gdi/svmconverter.cxx
@@ -171,7 +171,21 @@ bool ImplReadMapMode(SvStream& rIStm, MapMode& rMapMode)
         return false;
     }
 
-    rMapMode = MapMode( (MapUnit) nUnit, aOrg, Fraction( nXNum, nXDenom ), Fraction( nYNum, nYDenom ) );
+    Fraction aX(nXNum, nXDenom);
+    if (!aX.IsValid() || rtl::math::round(aX, 6) == 0.0)
+    {
+        SAL_WARN("vcl.gdi", "Parsing error: invalid mapmode fraction");
+        return false;
+    }
+
+    Fraction aY(nYNum, nYDenom);
+    if (!aY.IsValid() || rtl::math::round(aY, 6) == 0.0)
+    {
+        SAL_WARN("vcl.gdi", "Parsing error: invalid mapmode fraction");
+        return false;
+    }
+
+    rMapMode = MapMode((MapUnit) nUnit, aOrg, aX, aY);
 
     return true;
 }


More information about the Libreoffice-commits mailing list