SHA256
1
0
forked from pool/icu

Accepting request 892510 from X11:common:Factory

OBS-URL: https://build.opensuse.org/request/show/892510
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/icu?expand=0&rev=81
This commit is contained in:
Dominique Leuenberger 2021-05-15 21:15:42 +00:00 committed by Git OBS Bridge
commit 7a8a1ce9cb
3 changed files with 27 additions and 0 deletions

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Wed May 12 08:23:58 UTC 2021 - Andreas Schwab <schwab@suse.de>
- nan-undefined-conversion.patch: ICU-21613 Fix undefined behaviour in
ComplexUnitsConverter::applyRounder
-------------------------------------------------------------------
Sat Apr 10 22:41:04 UTC 2021 - Jan Engelhardt <jengelh@inai.de>

View File

@ -44,6 +44,7 @@ Patch4: icu-fix-install-mode-files.diff
Patch6: icu-error-reporting.diff
Patch7: icu-avoid-x87-excess-precision.diff
Patch8: locale.diff
Patch9: nan-undefined-conversion.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: pkg-config

View File

@ -0,0 +1,20 @@
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
--- a/source/i18n/units_complexconverter.cpp
+++ b/source/i18n/units_complexconverter.cpp
@@ -237,6 +237,11 @@ void ComplexUnitsConverter::applyRounder(MaybeStackArray<int64_t, 5> &intValues,
}
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