Make Android's ctype_base::mask unsigned.
authorDan Albert <danalbert@google.com>
Thu, 31 Jul 2014 21:04:08 +0000 (21:04 +0000)
committerDan Albert <danalbert@google.com>
Thu, 31 Jul 2014 21:04:08 +0000 (21:04 +0000)
Keeping the regex code sane is much easier if we match the other
platforms and use an unsigned mask.

llvm-svn: 214442

libcxx/include/__locale
libcxx/src/locale.cpp

index c5c0787..5ccd795 100644 (file)
@@ -356,7 +356,7 @@ public:
 #elif defined(__EMSCRIPTEN__) ||  defined(__NetBSD__)
     typedef unsigned short mask;
 #elif defined(__ANDROID__)
-    typedef char mask;
+    typedef unsigned char mask;
 #endif
     static const mask space  = _CTYPE_S;
     static const mask print  = _CTYPE_R;
index 148fe42..e626528 100644 (file)
@@ -1038,7 +1038,7 @@ ctype<char>::classic_table()  _NOEXCEPT
 #elif defined(_AIX)
     return (const unsigned int *)__lc_ctype_ptr->obj->mask;
 #elif defined(__ANDROID__)
-    return _ctype_ + 1;
+    return reinterpret_cast<const unsigned char*>(_ctype_) + 1;
 #else
     // Platform not supported: abort so the person doing the port knows what to
     // fix