sc/source/core/tool/interpr3.cxx |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

New commits:
commit f26178b17691ccc9d3da9c25cec9ef08a633b3a7
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Tue Oct 22 09:52:26 2019 +0200
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Tue Oct 22 18:25:57 2019 +0200

    -Werror,-Wimplicit-int-float-conversion
    
    > sc/source/core/tool/interpr3.cxx:3659:36: error: implicit conversion from 
'unsigned long' to 'double' changes value from 18446744073709551615 to 
18446744073709551616 [-Werror,-Wimplicit-int-float-conversion]
    >                 if (f < 1.0 || f > std::numeric_limits<SCSIZE>::max())
    >                                  ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    since 475165e431b5392e426db0de4cea50efc2513875 "Resolves: tdf#127982
    SMALL()/LARGE() rank array can be larger than data array"
    
    (This supersedes 1b0cba8c2cd672b0d5a59a215961c5136a6e656b
    "-Wimplicit-int-float-conversion", which would have incurred UB if f is 
larger
    than std::numeric_limits<SCSIZE>::max().)
    
    Change-Id: I1eeb75d73169ac89ec4bf9562edcf99d9925f607
    Reviewed-on: https://gerrit.libreoffice.org/81309
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx
index ae99d1a79ef6..f219beca9386 100644
--- a/sc/source/core/tool/interpr3.cxx
+++ b/sc/source/core/tool/interpr3.cxx
@@ -37,6 +37,7 @@
 #include <vector>
 #include <algorithm>
 #include <comphelper/random.hxx>
+#include <o3tl/float_int_conversion.hxx>
 #include <osl/diagnose.h>
 #include <basegfx/numeric/ftools.hxx>
 
@@ -3656,7 +3657,7 @@ void ScInterpreter::CalculateSmallLarge(bool bSmall)
             [](double f) {
                 f = rtl::math::approxFloor(f);
                 // Valid ranks are >= 1.
-                if (f < 1.0 || static_cast<SCSIZE>(f) > 
std::numeric_limits<SCSIZE>::max())
+                if (f < 1.0 || !o3tl::convertsToAtMost(f, 
std::numeric_limits<SCSIZE>::max()))
                     return static_cast<SCSIZE>(0);
                 return static_cast<SCSIZE>(f);
             });
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to