diff --git a/icu4c/source/i18n/number_fluent.cpp b/icu4c/source/i18n/number_fluent.cpp index 597df575870..0d3ee2d1238 100644 --- a/icu4c/source/i18n/number_fluent.cpp +++ b/icu4c/source/i18n/number_fluent.cpp @@ -320,7 +320,7 @@ Derived NumberFormatterSettings::macros(impl::MacroProps&& macros)&& { template UnicodeString NumberFormatterSettings::toSkeleton(UErrorCode& status) const { if (fMacros.copyErrorTo(status)) { - return {}; + return ICU_Utility::makeBogusString(); } return skeleton::generate(fMacros, status); } diff --git a/icu4c/source/test/intltest/numbertest_api.cpp b/icu4c/source/test/intltest/numbertest_api.cpp index 1295d29ce24..b8ddd44b9f3 100644 --- a/icu4c/source/test/intltest/numbertest_api.cpp +++ b/icu4c/source/test/intltest/numbertest_api.cpp @@ -2192,6 +2192,17 @@ void NumberFormatterApiTest::errors() { U_NUMBER_ARG_OUTOFBOUNDS_ERROR, status); + // Skeleton string + status = U_ZERO_ERROR; + UnicodeString output = lnf.toSkeleton(status); + assertEquals( + "Should fail on toSkeleton terminal method with correct error code", + U_NUMBER_ARG_OUTOFBOUNDS_ERROR, + status); + assertTrue( + "Terminal toSkeleton on error object should be bogus", + output.isBogus()); + // FieldPosition status = U_ZERO_ERROR; FieldPosition fp; @@ -2212,8 +2223,7 @@ void NumberFormatterApiTest::errors() { // Appendable status = U_ZERO_ERROR; - UnicodeString output; - UnicodeStringAppendable appendable(output); + UnicodeStringAppendable appendable(output.remove()); fn.appendTo(appendable, status); assertEquals( "Should fail on Appendable terminal method with correct error code",