chars: invalid sequences are not blank, nor text, nor punctuation
So, slightly speed up the functions that check for those.master
parent
8686cb3d3d
commit
b6efea266e
10
src/chars.c
10
src/chars.c
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue