tools/source/misc/fix16.cxx |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

New commits:
commit 15eb26d0f22c621f81086fc8d3c6525838adb426
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Thu Oct 31 15:26:22 2024 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Thu Oct 31 18:18:48 2024 +0100

    ofz: Undefined-shift
    
    Change-Id: Ibb42de616566aabdf6596b7c45d0afab90118bc9
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/175877
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/tools/source/misc/fix16.cxx b/tools/source/misc/fix16.cxx
index e465c16c5dc1..d13f7a30447e 100644
--- a/tools/source/misc/fix16.cxx
+++ b/tools/source/misc/fix16.cxx
@@ -119,8 +119,11 @@ fix16_t fix16_div(fix16_t a, fix16_t b)
         int shift = std::countl_zero(remainder);
         if (shift > bit_pos)
             shift = bit_pos;
-        remainder = (remainder & mask(32 - shift)) << shift;
-        bit_pos -= shift;
+        if (shift)
+        {
+            remainder = (remainder & mask(32 - shift)) << shift;
+            bit_pos -= shift;
+        }
 
         uint32_t div = remainder / divider;
         remainder = remainder % divider;

Reply via email to