Fix iswlower/iswupper.

The previous conditions were just plain wrong.

Test: bionic tests
Change-Id: Ia6d98207b1ff98ea4c6f619912e4bcdb8a7fdd24
diff --git a/libc/bionic/wctype.cpp b/libc/bionic/wctype.cpp
index 3a880d3..cd8c39b 100644
--- a/libc/bionic/wctype.cpp
+++ b/libc/bionic/wctype.cpp
@@ -40,8 +40,12 @@
 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.