File nan-undefined-conversion.patch of Package icu73_2.31607

From 29f1188d191a7a75ac7ffa4bfa390f625da39c53 Mon Sep 17 00:00:00 2001
From: Andreas Schwab <schwab@suse.de>
Date: Tue, 11 May 2021 19:04:24 +0200
Subject: [PATCH] ICU-21613 Fix undefined behaviour in
 ComplexUnitsConverter::applyRounder

Index: icu/source/i18n/units_complexconverter.cpp
===================================================================
--- icu.orig/source/i18n/units_complexconverter.cpp
+++ icu/source/i18n/units_complexconverter.cpp
@@ -242,6 +242,11 @@ void ComplexUnitsConverter::applyRounder
     }
     quantity = decimalQuantity.toDouble();
 
+    if (uprv_isNaN(quantity) || uprv_isInfinite(quantity)) {
+        // Do nothing for non-finite values, since conversion to int64_t is undefined
+        return;
+    }
+
     int32_t lastIndex = unitsConverters_.length() - 1;
     if (lastIndex == 0) {
         // Only one element, no need to bubble up the carry
openSUSE Build Service is sponsored by