From 16458663c3bdf640e3352653ea94a89fb2949ad4 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Sat, 4 Dec 2010 21:50:25 +0200 Subject: Speed up single byte cases. See ChangeLog. --- node.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) (limited to 'node.c') diff --git a/node.c b/node.c index d181bff9..0dd5f52a 100644 --- a/node.c +++ b/node.c @@ -706,11 +706,9 @@ str2wstr(NODE *n, size_t **ptr) * 9/2010: Check the current byte; if it's a valid character, * then it doesn't start a multibyte sequence. This brings a * big speed up. Thanks to Ulrich Drepper for the tip. + * 11/2010: Thanks to Paolo Bonzini for some even faster code. */ - if ( isprint(*sp) - || isgraph(*sp) - || iscntrl(*sp) - || *sp == '\0' ) { + if (is_valid_character(*sp)) { count = 1; wc = *sp; } else @@ -894,3 +892,18 @@ get_ieee_magic_val(const char *val) return v; } + +#ifdef MBS_SUPPORT +wint_t btowc_cache[256]; + +/* init_btowc_cache --- initialize the cache */ + +void init_btowc_cache() +{ + int i; + + for (i = 0; i < 255; i++) { + btowc_cache[i] = btowc(i); + } +} +#endif -- cgit v1.2.3