icu4c ver. bump
This commit is contained in:
+111
@@ -0,0 +1,111 @@
|
||||
From df0422ed3fc945386c5633cb8f4717fdce31f9fb Mon Sep 17 00:00:00 2001
|
||||
From: Fredrik Roubert <roubert@google.com>
|
||||
Date: Mon, 30 Dec 2024 21:26:37 +0900
|
||||
Subject: [PATCH] ICU-22954 Workaround: Replace std::u16string member with
|
||||
UnicodeString&.
|
||||
|
||||
---
|
||||
icu4c/source/tools/ctestfw/tstdtmod.cpp | 12 +++++++++---
|
||||
icu4c/source/tools/ctestfw/unicode/testlog.h | 18 +++++++++++++-----
|
||||
2 files changed, 22 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/icu4c/source/tools/ctestfw/tstdtmod.cpp b/icu4c/source/tools/ctestfw/tstdtmod.cpp
|
||||
index 5a8e1ef7365..15e8913d2b8 100644
|
||||
--- icu4c/source/tools/ctestfw/tstdtmod.cpp
|
||||
+++ icu4c/source/tools/ctestfw/tstdtmod.cpp
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "unicode/tstdtmod.h"
|
||||
+#include "unicode/unistr.h"
|
||||
#include "cmemory.h"
|
||||
#include <stdio.h>
|
||||
#include "cstr.h"
|
||||
@@ -18,11 +19,17 @@
|
||||
|
||||
TestLog::~TestLog() {}
|
||||
|
||||
+IcuTestErrorCode::IcuTestErrorCode(TestLog &callingTestClass, const char *callingTestName)
|
||||
+ : errorCode(U_ZERO_ERROR),
|
||||
+ testClass(callingTestClass), testName(callingTestName), scopeMessage(*new UnicodeString) {
|
||||
+}
|
||||
+
|
||||
IcuTestErrorCode::~IcuTestErrorCode() {
|
||||
// Safe because our errlog() does not throw exceptions.
|
||||
if(isFailure()) {
|
||||
errlog(false, u"destructor: expected success", nullptr);
|
||||
}
|
||||
+ delete &scopeMessage;
|
||||
}
|
||||
|
||||
UErrorCode IcuTestErrorCode::reset() {
|
||||
@@ -119,8 +126,7 @@ UBool IcuTestErrorCode::expectErrorAndReset(UErrorCode expectedError, const char
|
||||
}
|
||||
|
||||
void IcuTestErrorCode::setScope(const char* message) {
|
||||
- UnicodeString us(message, -1, US_INV);
|
||||
- scopeMessage = us;
|
||||
+ scopeMessage.remove().append({ message, -1, US_INV });
|
||||
}
|
||||
|
||||
void IcuTestErrorCode::setScope(std::u16string_view message) {
|
||||
@@ -136,7 +142,7 @@ void IcuTestErrorCode::errlog(UBool dataErr, std::u16string_view mainMessage, co
|
||||
msg.append(u' ').append(mainMessage);
|
||||
msg.append(u" but got error: ").append(UnicodeString(errorName(), -1, US_INV));
|
||||
|
||||
- if (!scopeMessage.empty()) {
|
||||
+ if (!scopeMessage.isEmpty()) {
|
||||
msg.append(u" scope: ").append(scopeMessage);
|
||||
}
|
||||
|
||||
diff --git a/icu4c/source/tools/ctestfw/unicode/testlog.h b/icu4c/source/tools/ctestfw/unicode/testlog.h
|
||||
index a5e62e80d73..44e99954f91 100644
|
||||
--- icu4c/source/tools/ctestfw/unicode/testlog.h
|
||||
+++ icu4c/source/tools/ctestfw/unicode/testlog.h
|
||||
@@ -13,7 +13,6 @@
|
||||
#ifndef U_TESTFW_TESTLOG
|
||||
#define U_TESTFW_TESTLOG
|
||||
|
||||
-#include <string>
|
||||
#include <string_view>
|
||||
#include "unicode/utypes.h"
|
||||
#include "unicode/testtype.h"
|
||||
@@ -35,14 +34,16 @@ class T_CTEST_EXPORT_API TestLog {
|
||||
// unit tests that work without U_SHOW_CPLUSPLUS_API.
|
||||
// So instead we *copy* the ErrorCode API.
|
||||
|
||||
+U_NAMESPACE_BEGIN
|
||||
+class UnicodeString;
|
||||
+U_NAMESPACE_END
|
||||
+
|
||||
class T_CTEST_EXPORT_API IcuTestErrorCode {
|
||||
public:
|
||||
IcuTestErrorCode(const IcuTestErrorCode&) = delete;
|
||||
IcuTestErrorCode& operator=(const IcuTestErrorCode&) = delete;
|
||||
|
||||
- IcuTestErrorCode(TestLog &callingTestClass, const char *callingTestName)
|
||||
- : errorCode(U_ZERO_ERROR),
|
||||
- testClass(callingTestClass), testName(callingTestName), scopeMessage() {}
|
||||
+ IcuTestErrorCode(TestLog &callingTestClass, const char *callingTestName);
|
||||
virtual ~IcuTestErrorCode();
|
||||
|
||||
// ErrorCode API
|
||||
@@ -75,7 +76,14 @@ class T_CTEST_EXPORT_API IcuTestErrorCode {
|
||||
UErrorCode errorCode;
|
||||
TestLog &testClass;
|
||||
const char *const testName;
|
||||
- std::u16string scopeMessage;
|
||||
+
|
||||
+ // It's not possible to use a UnicodeString member directly here because
|
||||
+ // that won't work without U_SHOW_CPLUSPLUS_API, but it's also not possible
|
||||
+ // to use a std::u16string member because for unknown reasons that leads to
|
||||
+ // a crash in the icu4c-windows-cygwin-gcc CI job. As a workaround, the
|
||||
+ // UnicodeString class is forward declared to make it possible to use a
|
||||
+ // reference here and then heap allocate the object in the constructor.
|
||||
+ UnicodeString& scopeMessage;
|
||||
|
||||
void errlog(UBool dataErr, std::u16string_view mainMessage, const char* extraMessage) const;
|
||||
};
|
||||
--
|
||||
2.47.1
|
||||
|
||||
Reference in New Issue
Block a user