Index: patches/vscomp.patch |
diff --git a/patches/vscomp.patch b/patches/vscomp.patch |
index ff62779ad661584021752d44440671e9c6ee26f7..8141437153d942b1b236edd08874a81f91f7ca67 100644 |
--- a/patches/vscomp.patch |
+++ b/patches/vscomp.patch |
@@ -37,3 +37,68 @@ index 0fb2b3e..007713e 100644 |
+#endif |
U_NAMESPACE_END |
+diff --git a/source/i18n/collationfastlatin.cpp b/source/i18n/collationfastlatin.cpp |
+index 0b26d1d..dc654a3 100644 |
+--- a/source/i18n/collationfastlatin.cpp |
++++ b/source/i18n/collationfastlatin.cpp |
+@@ -39,10 +39,10 @@ CollationFastLatin::getOptions(const CollationData *data, const CollationSetting |
+ uint32_t v1 = settings.variableTop >> 24; |
+ int32_t headerLength = *table & 0xff; |
+ int32_t i = headerLength - 1; |
+- if(i <= 0 || v1 > (table[i] & 0x7f)) { |
++ if(i <= 0 || v1 > (table[i] & 0x7fu)) { |
+ return -1; // variableTop >= digits, should not occur |
+ } |
+- while(i > 1 && v1 <= (table[i - 1] & 0x7f)) { --i; } |
++ while(i > 1 && v1 <= (table[i - 1] & 0x7fu)) { --i; } |
+ // In the table header, the miniVarTop is in bits 15..7, with 4 zero bits 19..16 implied. |
+ // Shift right to make it comparable with long mini primaries in bits 15..3. |
+ miniVarTop = (table[i] & 0xff80) >> 4; |
+diff --git a/source/i18n/decimfmt.cpp b/source/i18n/decimfmt.cpp |
+index da1f8d2..825651b 100644 |
+--- a/source/i18n/decimfmt.cpp |
++++ b/source/i18n/decimfmt.cpp |
+@@ -1450,7 +1450,7 @@ DecimalFormat::_format(int64_t number, |
+ // Slide the number to the start of the output str |
+ U_ASSERT(destIdx >= 0); |
+ int32_t length = MAX_IDX - destIdx -1; |
+- /*int32_t prefixLen = */ appendAffix(appendTo, number, handler, number<0, TRUE); |
++ /*int32_t prefixLen = */ appendAffix(appendTo, static_cast<double>(number), handler, number<0, TRUE); |
+ int32_t maxIntDig = getMaximumIntegerDigits(); |
+ int32_t destlength = length<=maxIntDig?length:maxIntDig; // dest length pinned to max int digits |
+ |
+@@ -1474,7 +1474,7 @@ DecimalFormat::_format(int64_t number, |
+ destlength); |
+ handler.addAttribute(kIntegerField, intBegin, appendTo.length()); |
+ |
+- /*int32_t suffixLen =*/ appendAffix(appendTo, number, handler, number<0, FALSE); |
++ /*int32_t suffixLen =*/ appendAffix(appendTo, static_cast<double>(number), handler, number<0, FALSE); |
+ |
+ //outputStr[length]=0; |
+ |
+diff --git a/source/i18n/digitlst.cpp b/source/i18n/digitlst.cpp |
+index b0e6010..8de7324 100644 |
+--- a/source/i18n/digitlst.cpp |
++++ b/source/i18n/digitlst.cpp |
+@@ -704,7 +704,7 @@ DigitList::set(int64_t source) |
+ U_ASSERT(uprv_strlen(str) < sizeof(str)); |
+ |
+ uprv_decNumberFromString(fDecNumber, str, &fContext); |
+- internalSetDouble(source); |
++ internalSetDouble(static_cast<double>(source)); |
+ } |
+ |
+ /** |
+diff --git a/source/i18n/regexcmp.cpp b/source/i18n/regexcmp.cpp |
+index 0c2196f..ea01d5a 100644 |
+--- a/source/i18n/regexcmp.cpp |
++++ b/source/i18n/regexcmp.cpp |
+@@ -3471,7 +3471,7 @@ int32_t RegexCompile::maxMatchLength(int32_t start, int32_t end) { |
+ break; |
+ } |
+ |
+- int32_t maxLoopCount = fRXPat->fCompiledPat->elementAti(loc+3); |
++ int32_t maxLoopCount = static_cast<int32_t>(fRXPat->fCompiledPat->elementAti(loc+3)); |
+ if (maxLoopCount == -1) { |
+ // Unbounded Loop. No upper bound on match length. |
+ currentLen = INT32_MAX; |