Revert "towctrans() should return the input and set errno on failure."
This reverts commit 5f99b0225b8a7ea8357de4792b668e7b59930816.
We don't want this on the android15-tests-dev branch, since the code fix
will only apply to API level 36.
Bug: https://issuetracker.google.com/362672773
Bug: https://issuetracker.google.com/365705848
Change-Id: I44cc088acd7fb337922db3216c719d6b1fdc283a
diff --git a/libc/bionic/wctype.cpp b/libc/bionic/wctype.cpp
index b37f17b..71caa76 100644
--- a/libc/bionic/wctype.cpp
+++ b/libc/bionic/wctype.cpp
@@ -150,7 +150,6 @@
wctrans_t wctrans(const char* name) {
if (strcmp(name, "tolower") == 0) return wctrans_tolower;
if (strcmp(name, "toupper") == 0) return wctrans_toupper;
- errno = EINVAL;
return nullptr;
}
@@ -162,7 +161,7 @@
if (t == wctrans_tolower) return towlower(c);
if (t == wctrans_toupper) return towupper(c);
errno = EINVAL;
- return c;
+ return 0;
}
wint_t towctrans_l(wint_t c, wctrans_t t, locale_t) {
diff --git a/tests/wctype_test.cpp b/tests/wctype_test.cpp
index f4b7a8f..38d26ca 100644
--- a/tests/wctype_test.cpp
+++ b/tests/wctype_test.cpp
@@ -226,64 +226,34 @@
EXPECT_EQ(0, iswctype_l(WEOF, wctype_l("alnum", l.l), l.l));
}
-TEST(wctype, wctrans) {
+TEST(wctype, towctrans) {
EXPECT_TRUE(wctrans("tolower") != nullptr);
EXPECT_TRUE(wctrans("toupper") != nullptr);
- errno = 0;
EXPECT_TRUE(wctrans("monkeys") == nullptr);
- #if defined(__BIONIC__)
- // Android/FreeBSD/iOS set errno, but musl/glibc don't.
- EXPECT_ERRNO(EINVAL);
- #endif
-}
-
-TEST(wctype, wctrans_l) {
- UtfLocale l;
- EXPECT_TRUE(wctrans_l("tolower", l.l) != nullptr);
- EXPECT_TRUE(wctrans_l("toupper", l.l) != nullptr);
-
- errno = 0;
- EXPECT_TRUE(wctrans_l("monkeys", l.l) == nullptr);
- #if defined(__BIONIC__)
- // Android/FreeBSD/iOS set errno, but musl/glibc don't.
- EXPECT_ERRNO(EINVAL);
- #endif
-}
-
-TEST(wctype, towctrans) {
- wctrans_t lower = wctrans("tolower");
- EXPECT_EQ(wint_t('a'), towctrans(L'A', lower));
- EXPECT_EQ(WEOF, towctrans(WEOF, lower));
-
- wctrans_t upper = wctrans("toupper");
- EXPECT_EQ(wint_t('A'), towctrans(L'a', upper));
- EXPECT_EQ(WEOF, towctrans(WEOF, upper));
-
- wctrans_t invalid = wctrans("monkeys");
- errno = 0;
- EXPECT_EQ(wint_t('a'), towctrans(L'a', invalid));
- #if defined(__BIONIC__)
- // Android/FreeBSD/iOS set errno, but musl/glibc don't.
- EXPECT_ERRNO(EINVAL);
- #endif
}
TEST(wctype, towctrans_l) {
UtfLocale l;
- wctrans_t lower = wctrans_l("tolower", l.l);
- EXPECT_EQ(wint_t('a'), towctrans_l(L'A', lower, l.l));
- EXPECT_EQ(WEOF, towctrans_l(WEOF, lower, l.l));
+ EXPECT_TRUE(wctrans_l("tolower", l.l) != nullptr);
+ EXPECT_TRUE(wctrans_l("toupper", l.l) != nullptr);
- wctrans_t upper = wctrans_l("toupper", l.l);
- EXPECT_EQ(wint_t('A'), towctrans_l(L'a', upper, l.l));
- EXPECT_EQ(WEOF, towctrans_l(WEOF, upper, l.l));
+ EXPECT_TRUE(wctrans_l("monkeys", l.l) == nullptr);
+}
- wctrans_t invalid = wctrans_l("monkeys", l.l);
- errno = 0;
- EXPECT_EQ(wint_t('a'), towctrans_l(L'a', invalid, l.l));
- #if defined(__BIONIC__)
- // Android/FreeBSD/iOS set errno, but musl/glibc don't.
- EXPECT_ERRNO(EINVAL);
- #endif
+TEST(wctype, wctrans) {
+ EXPECT_EQ(wint_t('a'), towctrans(L'A', wctrans("tolower")));
+ EXPECT_EQ(WEOF, towctrans(WEOF, wctrans("tolower")));
+
+ EXPECT_EQ(wint_t('A'), towctrans(L'a', wctrans("toupper")));
+ EXPECT_EQ(WEOF, towctrans(WEOF, wctrans("toupper")));
+}
+
+TEST(wctype, wctrans_l) {
+ UtfLocale l;
+ EXPECT_EQ(wint_t('a'), towctrans_l(L'A', wctrans_l("tolower", l.l), l.l));
+ EXPECT_EQ(WEOF, towctrans_l(WEOF, wctrans_l("tolower", l.l), l.l));
+
+ EXPECT_EQ(wint_t('A'), towctrans_l(L'a', wctrans_l("toupper", l.l), l.l));
+ EXPECT_EQ(WEOF, towctrans_l(WEOF, wctrans_l("toupper", l.l), l.l));
}