chars: invalid sequences are not blank, nor text, nor punctuation

So, slightly speed up the functions that check for those.
master
Benno Schulenberg 2016-06-05 21:49:29 +02:00
parent 8686cb3d3d
commit b6efea266e
1 changed files with 3 additions and 7 deletions

View File

@ -35,10 +35,6 @@
static bool use_utf8 = FALSE; static bool use_utf8 = FALSE;
/* Whether we've enabled UTF-8 support. */ /* Whether we've enabled UTF-8 support. */
static const wchar_t bad_wchar = 0xFFFD;
/* If we get an invalid multibyte sequence, we treat it as
* Unicode FFFD (Replacement Character), unless we're searching
* for a match to it. */
static const char *const bad_mbchar = "\xEF\xBF\xBD"; static const char *const bad_mbchar = "\xEF\xBF\xBD";
static const int bad_mbchar_len = 3; static const int bad_mbchar_len = 3;
@ -110,7 +106,7 @@ bool is_alnum_mbchar(const char *c)
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc_reset(); mbtowc_reset();
wc = bad_wchar; return 0;
} }
return iswalnum(wc); return iswalnum(wc);
@ -130,7 +126,7 @@ bool is_blank_mbchar(const char *c)
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc_reset(); mbtowc_reset();
wc = bad_wchar; return 0;
} }
return iswblank(wc); return iswblank(wc);
@ -180,7 +176,7 @@ bool is_punct_mbchar(const char *c)
if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { if (mbtowc(&wc, c, MB_CUR_MAX) < 0) {
mbtowc_reset(); mbtowc_reset();
wc = bad_wchar; return 0;
} }
return iswpunct(wc); return iswpunct(wc);