diff options
author | dim <dim@FreeBSD.org> | 2012-10-22 18:25:04 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2012-10-22 18:25:04 +0000 |
commit | 708d8e446e991358da23bb52ec5320440221f12f (patch) | |
tree | 3a061d75674cd5b60d9f6df45d0b8d755da3782f /contrib/libc++/src/locale.cpp | |
parent | b8c74d455d2690e710a0802a98a9d310995a52eb (diff) | |
parent | 13334223d751d249ccd6475b8cba36ff71ddc972 (diff) | |
download | FreeBSD-src-708d8e446e991358da23bb52ec5320440221f12f.zip FreeBSD-src-708d8e446e991358da23bb52ec5320440221f12f.tar.gz |
Import libc++ trunk r165949. Among other improvements and bug fixes,
this has many visibility problems fixed, which should help with
compiling certain ports that exercise C++11 mode (i.e. Firefox).
Also, belatedly add the LICENSE.TXT and accompanying CREDITS.TXT files,
which are referred to in all the source files.
MFC after: 1 month
Diffstat (limited to 'contrib/libc++/src/locale.cpp')
-rw-r--r-- | contrib/libc++/src/locale.cpp | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/contrib/libc++/src/locale.cpp b/contrib/libc++/src/locale.cpp index fe99488..542c0d7 100644 --- a/contrib/libc++/src/locale.cpp +++ b/contrib/libc++/src/locale.cpp @@ -1052,17 +1052,17 @@ ctype_byname<wchar_t>::do_is(mask m, char_type c) const #ifdef _LIBCPP_WCTYPE_IS_MASK return static_cast<bool>(iswctype_l(c, m, __l)); #else - bool result = true; - if (m & space && !iswspace_l(c, __l)) result = false; - if (m & print && !iswprint_l(c, __l)) result = false; - if (m & cntrl && !iswcntrl_l(c, __l)) result = false; - if (m & upper && !iswupper_l(c, __l)) result = false; - if (m & lower && !iswlower_l(c, __l)) result = false; - if (m & alpha && !iswalpha_l(c, __l)) result = false; - if (m & digit && !iswdigit_l(c, __l)) result = false; - if (m & punct && !iswpunct_l(c, __l)) result = false; - if (m & xdigit && !iswxdigit_l(c, __l)) result = false; - if (m & blank && !iswblank_l(c, __l)) result = false; + bool result = false; + if (m & space) result |= (iswspace_l(c, __l) != 0); + if (m & print) result |= (iswprint_l(c, __l) != 0); + if (m & cntrl) result |= (iswcntrl_l(c, __l) != 0); + if (m & upper) result |= (iswupper_l(c, __l) != 0); + if (m & lower) result |= (iswlower_l(c, __l) != 0); + if (m & alpha) result |= (iswalpha_l(c, __l) != 0); + if (m & digit) result |= (iswdigit_l(c, __l) != 0); + if (m & punct) result |= (iswpunct_l(c, __l) != 0); + if (m & xdigit) result |= (iswxdigit_l(c, __l) != 0); + if (m & blank) result |= (iswblank_l(c, __l) != 0); return result; #endif } @@ -1109,17 +1109,16 @@ ctype_byname<wchar_t>::do_scan_is(mask m, const char_type* low, const char_type* if (iswctype_l(*low, m, __l)) break; #else - if (m & space && !iswspace_l(*low, __l)) continue; - if (m & print && !iswprint_l(*low, __l)) continue; - if (m & cntrl && !iswcntrl_l(*low, __l)) continue; - if (m & upper && !iswupper_l(*low, __l)) continue; - if (m & lower && !iswlower_l(*low, __l)) continue; - if (m & alpha && !iswalpha_l(*low, __l)) continue; - if (m & digit && !iswdigit_l(*low, __l)) continue; - if (m & punct && !iswpunct_l(*low, __l)) continue; - if (m & xdigit && !iswxdigit_l(*low, __l)) continue; - if (m & blank && !iswblank_l(*low, __l)) continue; - break; + if (m & space && iswspace_l(*low, __l)) break; + if (m & print && iswprint_l(*low, __l)) break; + if (m & cntrl && iswcntrl_l(*low, __l)) break; + if (m & upper && iswupper_l(*low, __l)) break; + if (m & lower && iswlower_l(*low, __l)) break; + if (m & alpha && iswalpha_l(*low, __l)) break; + if (m & digit && iswdigit_l(*low, __l)) break; + if (m & punct && iswpunct_l(*low, __l)) break; + if (m & xdigit && iswxdigit_l(*low, __l)) break; + if (m & blank && iswblank_l(*low, __l)) break; #endif } return low; @@ -4865,7 +4864,7 @@ template <> void __time_get_storage<char>::init(const ctype<char>& ct) { - tm t; + tm t = {0}; char buf[100]; // __weeks_ for (int i = 0; i < 7; ++i) |