aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2016-11-16 15:19:08 -0800
committerElliott Hughes <enh@google.com>2016-11-16 15:19:08 -0800
commitf76a21a1854f56a28415e0fd87a8f43a2abcab94 (patch)
tree938b6959121d8d2224d3878f2a452c6ee613a50d
parent8945d5e43a25737f3f888a90742cc918b1124a05 (diff)
downloadandroid_bionic-f76a21a1854f56a28415e0fd87a8f43a2abcab94.tar.gz
android_bionic-f76a21a1854f56a28415e0fd87a8f43a2abcab94.tar.bz2
android_bionic-f76a21a1854f56a28415e0fd87a8f43a2abcab94.zip
Fix iswlower/iswupper.
The previous conditions were just plain wrong. Test: bionic tests Change-Id: Ia6d98207b1ff98ea4c6f619912e4bcdb8a7fdd24
-rw-r--r--libc/bionic/wctype.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/libc/bionic/wctype.cpp b/libc/bionic/wctype.cpp
index 3a880d33f..cd8c39b0b 100644
--- a/libc/bionic/wctype.cpp
+++ b/libc/bionic/wctype.cpp
@@ -40,8 +40,12 @@ int iswalnum(wint_t wc) { return iswdigit(wc) || iswalpha(wc); }
int iswblank(wint_t wc) { return isblank(wc); }
int iswdigit(wint_t wc) { return isdigit(wc); }
int iswgraph(wint_t wc) { return !iswspace(wc) && iswprint(wc); }
-int iswlower(wint_t wc) { return towlower(wc) != wc; }
-int iswupper(wint_t wc) { return towupper(wc) != wc; }
+int iswlower(wint_t wc) {
+ return towlower(wc) == wc && !(iswcntrl(wc) || iswdigit(wc) || iswpunct(wc) || iswspace(wc));
+}
+int iswupper(wint_t wc) {
+ return towupper(wc) == wc && !(iswcntrl(wc) || iswdigit(wc) || iswpunct(wc) || iswspace(wc));
+}
int iswxdigit(wint_t wc) { return isxdigit(wc); }
// TODO: need proper implementations of these.