[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#923944: unblock: double-conversion/3.1.0-3



Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock

I've cherry-picked upstream commits to fix an upstream bug:
https://github.com/google/double-conversion/issues/89
That's all changes from 3.1.0-2 (testing) to 3.1.0-3.
The -3 revision will land on unstable shortly.
debdiff attached.

Detail:
* 8751aafe993c4ec429ba172916596403a336d502.diff
  fixes upstream issue #89
* 860b43156c1ba436aba9792407429bf46b9780a0.diff
  fixes typo in unit tests introduced by the above patch

unblock double-conversion/3.1.0-3

-- System Information:
Debian Release: buster/sid
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-3-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru double-conversion-3.1.0/debian/changelog double-conversion-3.1.0/debian/changelog
--- double-conversion-3.1.0/debian/changelog	2018-09-20 05:41:28.000000000 +0000
+++ double-conversion-3.1.0/debian/changelog	2019-03-07 14:15:09.000000000 +0000
@@ -1,3 +1,9 @@
+double-conversion (3.1.0-3) unstable; urgency=medium
+
+  * Cherry-pick upstream commits to fix incorrect downcasting of separator_.
+
+ -- Mo Zhou <cdluminate@gmail.com>  Thu, 07 Mar 2019 14:15:09 +0000
+
 double-conversion (3.1.0-2) unstable; urgency=medium
 
   * autopkgtest: Add one more test script unittest.sh .
diff -Nru double-conversion-3.1.0/debian/patches/860b43156c1ba436aba9792407429bf46b9780a0.diff double-conversion-3.1.0/debian/patches/860b43156c1ba436aba9792407429bf46b9780a0.diff
--- double-conversion-3.1.0/debian/patches/860b43156c1ba436aba9792407429bf46b9780a0.diff	1970-01-01 00:00:00.000000000 +0000
+++ double-conversion-3.1.0/debian/patches/860b43156c1ba436aba9792407429bf46b9780a0.diff	2019-03-07 14:06:42.000000000 +0000
@@ -0,0 +1,15 @@
+Modified from https://github.com/google/double-conversion/commit/860b43156c1ba436aba9792407429bf46b9780a0
+
+Index: double-conversion/test/cctest/test-conversions.cc
+===================================================================
+--- double-conversion.orig/test/cctest/test-conversions.cc
++++ double-conversion/test/cctest/test-conversions.cc
+@@ -3603,7 +3603,7 @@ TEST(StringToDoubleSeparator) {
+   CHECK(all_used);
+ 
+   CHECK_EQ(3.0,
+-           StrToD16("0x0@23.p0", flags, 0.0, &processed, &all_used,
++           StrToD16("0x0@3.p0", flags, 0.0, &processed, &all_used,
+                     char_separator, separator));
+   CHECK(all_used);
+ }
diff -Nru double-conversion-3.1.0/debian/patches/8751aafe993c4ec429ba172916596403a336d502.diff double-conversion-3.1.0/debian/patches/8751aafe993c4ec429ba172916596403a336d502.diff
--- double-conversion-3.1.0/debian/patches/8751aafe993c4ec429ba172916596403a336d502.diff	1970-01-01 00:00:00.000000000 +0000
+++ double-conversion-3.1.0/debian/patches/8751aafe993c4ec429ba172916596403a336d502.diff	2019-03-07 14:06:42.000000000 +0000
@@ -0,0 +1,153 @@
+Fixes upstream bug: https://github.com/google/double-conversion/issues/89
+Cherry-picked from: https://github.com/google/double-conversion/commit/8751aafe993c4ec429ba172916596403a336d502
+
+Index: double-conversion/double-conversion/double-conversion.cc
+===================================================================
+--- double-conversion.orig/double-conversion/double-conversion.cc
++++ double-conversion/double-conversion/double-conversion.cc
+@@ -553,7 +553,7 @@ static bool IsCharacterDigitForRadix(int
+ 
+ // Returns true, when the iterator is equal to end.
+ template<class Iterator>
+-static bool Advance (Iterator* it, char separator, int base, Iterator& end) {
++static bool Advance (Iterator* it, uc16 separator, int base, Iterator& end) {
+   if (separator == StringToDoubleConverter::kNoSeparator) {
+     ++(*it);
+     return *it == end;
+@@ -581,7 +581,7 @@ static bool Advance (Iterator* it, char
+ template<class Iterator>
+ static bool IsHexFloatString(Iterator start,
+                              Iterator end,
+-                             char separator,
++                             uc16 separator,
+                              bool allow_trailing_junk) {
+   ASSERT(start != end);
+ 
+@@ -622,7 +622,7 @@ template <int radix_log_2, class Iterato
+ static double RadixStringToIeee(Iterator* current,
+                                 Iterator end,
+                                 bool sign,
+-                                char separator,
++                                uc16 separator,
+                                 bool parse_as_hex_float,
+                                 bool allow_trailing_junk,
+                                 double junk_string_value,
+Index: double-conversion/test/cctest/test-conversions.cc
+===================================================================
+--- double-conversion.orig/test/cctest/test-conversions.cc
++++ double-conversion/test/cctest/test-conversions.cc
+@@ -1731,6 +1731,33 @@ static double StrToD16(const uc16* str16
+ }
+ 
+ 
++static double StrToD16(const char* str, int flags,
++                       double empty_string_value,
++                       int* processed_characters_count, bool* processed_all,
++                       char char_separator, uc16 separator) {
++  uc16 str16[256];
++  int length = -1;
++  for (int i = 0;; i++) {
++    if (str[i] == char_separator) {
++            str16[i] = separator;
++    } else {
++            str16[i] = str[i];
++    }
++    if (str[i] == '\0') {
++      length = i;
++      break;
++    }
++  }
++  ASSERT(length < 256);
++  StringToDoubleConverter converter(flags, empty_string_value, Double::NaN(),
++                                    NULL, NULL, separator);
++  double result =
++      converter.StringToDouble(str16, length, processed_characters_count);
++  *processed_all = (length == *processed_characters_count);
++  return result;
++}
++
++
+ static double StrToD(const char* str, int flags, double empty_string_value,
+                      int* processed_characters_count, bool* processed_all,
+                      uc16 separator = StringToDoubleConverter::kNoSeparator) {
+@@ -3203,7 +3230,7 @@ TEST(StringToDoubleSeparator) {
+   int flags;
+   int processed;
+   bool all_used;
+-  char separator;
++  uc16 separator;
+ 
+   separator = '\'';
+   flags = StringToDoubleConverter::NO_FLAGS;
+@@ -3514,6 +3541,71 @@ TEST(StringToDoubleSeparator) {
+   CHECK_EQ(Double::NaN(),
+            StrToD("0x0 3.p -0", flags, 0.0, &processed, &all_used));
+   CHECK_EQ(0, processed);
++
++  separator = 0x202F;
++  char char_separator = '@';
++  flags = StringToDoubleConverter::ALLOW_HEX |
++      StringToDoubleConverter::ALLOW_HEX_FLOATS |
++      StringToDoubleConverter::ALLOW_LEADING_SPACES |
++      StringToDoubleConverter::ALLOW_TRAILING_SPACES;
++
++  CHECK_EQ(18.0,
++           StrToD16("0x1@2", flags, 0.0, &processed, &all_used,
++                    char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(0.0, StrToD16("0x0@0", flags, 1.0, &processed, &all_used,
++                         char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(static_cast<double>(0x123456789),
++           StrToD16("0x1@2@3@4@5@6@7@8@9", flags, Double::NaN(),
++                    &processed, &all_used, char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(18.0, StrToD16(" 0x1@2 ", flags, 0.0,
++                          &processed, &all_used, char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(static_cast<double>(0xabcdef),
++           StrToD16("0xa@b@c@d@e@f", flags, 0.0,
++                    &processed, &all_used, char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(Double::NaN(),
++           StrToD16("0x@1@2", flags, 0.0,
++                    &processed, &all_used, char_separator, separator));
++  CHECK_EQ(0, processed);
++
++  CHECK_EQ(Double::NaN(),
++           StrToD16("0@x0", flags, 1.0,
++                    &processed, &all_used, char_separator, separator));
++  CHECK_EQ(0, processed);
++
++  CHECK_EQ(Double::NaN(),
++           StrToD16("0x1@2@@3@4@5@6@7@8@9", flags, Double::NaN(),
++                  &processed, &all_used, char_separator, separator));
++  CHECK_EQ(0, processed);
++
++  CHECK_EQ(3.0,
++           StrToD16("0x0@3p0", flags, 0.0, &processed, &all_used,
++                    char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(0.0,
++           StrToD16("0x.0@0p0", flags, 0.0, &processed, &all_used,
++                    char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(3.0,
++           StrToD16("0x3.0@0p0", flags, 0.0, &processed, &all_used,
++                    char_separator, separator));
++  CHECK(all_used);
++
++  CHECK_EQ(3.0,
++           StrToD16("0x0@23.p0", flags, 0.0, &processed, &all_used,
++                    char_separator, separator));
++  CHECK(all_used);
+ }
+ 
+ TEST(StringToDoubleSpecialValues) {
diff -Nru double-conversion-3.1.0/debian/patches/series double-conversion-3.1.0/debian/patches/series
--- double-conversion-3.1.0/debian/patches/series	2018-09-20 05:41:28.000000000 +0000
+++ double-conversion-3.1.0/debian/patches/series	2019-03-07 14:06:29.000000000 +0000
@@ -1 +1,3 @@
 fix_m68k.patch
+8751aafe993c4ec429ba172916596403a336d502.diff
+860b43156c1ba436aba9792407429bf46b9780a0.diff

Reply to: