nodejs-v8-icu59.patch 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. Index: src/i18n.cc
  2. diff --git a/deps/v8/src/i18n.cc b/deps/v8/src/i18n.cc
  3. index d2245ef34a9a319a53b4cf4b4ea05ec095fef2d5..7c22871ff5e440f771659d44a0db013b34ec2105 100644
  4. --- a/deps/v8/src/i18n.cc
  5. +++ b/deps/v8/src/i18n.cc
  6. @@ -30,8 +30,13 @@
  7. #include "unicode/ucol.h"
  8. #include "unicode/ucurr.h"
  9. #include "unicode/unum.h"
  10. +#include "unicode/uvernum.h"
  11. #include "unicode/uversion.h"
  12. +#if U_ICU_VERSION_MAJOR_NUM >= 59
  13. +#include "unicode/char16ptr.h"
  14. +#endif
  15. +
  16. namespace v8 {
  17. namespace internal {
  18. @@ -270,8 +275,13 @@ icu::DecimalFormat* CreateICUNumberFormat(
  19. }
  20. UErrorCode status_digits = U_ZERO_ERROR;
  21. +#if U_ICU_VERSION_MAJOR_NUM >= 59
  22. uint32_t fraction_digits = ucurr_getDefaultFractionDigits(
  23. - currency.getTerminatedBuffer(), &status_digits);
  24. + icu::toUCharPtr(currency.getTerminatedBuffer()), &status_digits);
  25. +#else
  26. + uint32_t fraction_digits = ucurr_getDefaultFractionDigits(
  27. + currency.getTerminatedBuffer(), &status_digits);
  28. +#endif
  29. if (U_SUCCESS(status_digits)) {
  30. number_format->setMinimumFractionDigits(fraction_digits);
  31. number_format->setMaximumFractionDigits(fraction_digits);
  32. Index: src/runtime/runtime-i18n.cc
  33. diff --git a/deps/v8/src/runtime/runtime-i18n.cc b/deps/v8/src/runtime/runtime-i18n.cc
  34. index 0b45381914641a824e36e99eaa0d315bf96252aa..e89175a37db11aa6990888e26e6bb989cf7c36b5 100644
  35. --- a/deps/v8/src/runtime/runtime-i18n.cc
  36. +++ b/deps/v8/src/runtime/runtime-i18n.cc
  37. @@ -43,6 +43,7 @@
  38. #include "unicode/uloc.h"
  39. #include "unicode/unistr.h"
  40. #include "unicode/unum.h"
  41. +#include "unicode/ustring.h"
  42. #include "unicode/uversion.h"
  43. @@ -609,10 +610,11 @@ RUNTIME_FUNCTION(Runtime_InternalCompare) {
  44. String::FlatContent flat2 = string2->GetFlatContent();
  45. std::unique_ptr<uc16[]> sap1;
  46. std::unique_ptr<uc16[]> sap2;
  47. - const UChar* string_val1 = GetUCharBufferFromFlat(flat1, &sap1, length1);
  48. - const UChar* string_val2 = GetUCharBufferFromFlat(flat2, &sap2, length2);
  49. - result =
  50. - collator->compare(string_val1, length1, string_val2, length2, status);
  51. + icu::UnicodeString string_val1(
  52. + FALSE, GetUCharBufferFromFlat(flat1, &sap1, length1), length1);
  53. + icu::UnicodeString string_val2(
  54. + FALSE, GetUCharBufferFromFlat(flat2, &sap2, length2), length2);
  55. + result = collator->compare(string_val1, string_val2, status);
  56. }
  57. if (U_FAILURE(status)) return isolate->ThrowIllegalOperation();