diff options
author | Elliott Hughes <enh@google.com> | 2016-11-16 15:19:08 -0800 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2016-11-16 15:19:08 -0800 |
commit | f76a21a1854f56a28415e0fd87a8f43a2abcab94 (patch) | |
tree | 938b6959121d8d2224d3878f2a452c6ee613a50d | |
parent | 8945d5e43a25737f3f888a90742cc918b1124a05 (diff) | |
download | android_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.cpp | 8 |
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. |