diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-02-20 21:08:35 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-02-20 21:08:35 +0200 |
commit | 2d88b04891825ae4e687b95813cff87627404930 (patch) | |
tree | 8c5f3c6a2ea3ac997aebd70345bd7fbaa94aa94b /regex_internal.c | |
parent | 090687d94ad8a411c5e2cc434345e843ad381082 (diff) | |
download | egawk-2d88b04891825ae4e687b95813cff87627404930.tar.gz egawk-2d88b04891825ae4e687b95813cff87627404930.tar.bz2 egawk-2d88b04891825ae4e687b95813cff87627404930.zip |
Sync regex with GLIBC.
Diffstat (limited to 'regex_internal.c')
-rw-r--r-- | regex_internal.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/regex_internal.c b/regex_internal.c index 2d170932..759c7c81 100644 --- a/regex_internal.c +++ b/regex_internal.c @@ -320,12 +320,13 @@ build_wcs_upper_buffer (re_string_t *pstr) + byte_idx), remain_len, &pstr->cur_state); if (BE (mbclen + 2 > 2, 1)) { - wchar_t wcu = towupper (wc); - if (wcu != wc) + wchar_t wcu = wc; + if (iswlower (wc)) { size_t mbcdlen; - mbcdlen = wcrtomb (buf, wcu, &prev_st); + wcu = towupper (wc); + mbcdlen = __wcrtomb (buf, wcu, &prev_st); if (BE (mbclen == mbcdlen, 1)) memcpy (pstr->mbs + byte_idx, buf, mbclen); else @@ -389,11 +390,12 @@ build_wcs_upper_buffer (re_string_t *pstr) mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state); if (BE (mbclen + 2 > 2, 1)) { - wchar_t wcu = towupper (wc); - if (wcu != wc) + wchar_t wcu = wc; + if (iswlower (wc)) { size_t mbcdlen; + wcu = towupper (wc); mbcdlen = wcrtomb ((char *) buf, wcu, &prev_st); if (BE (mbclen == mbcdlen, 1)) memcpy (pstr->mbs + byte_idx, buf, mbclen); @@ -838,7 +840,7 @@ re_string_reconstruct (re_string_t *pstr, int idx, int eflags) } static unsigned char -internal_function __attribute__ ((pure)) +internal_function __attribute ((pure)) re_string_peek_byte_case (const re_string_t *pstr, int idx) { int ch, off; @@ -1370,7 +1372,7 @@ re_node_set_insert_last (re_node_set *set, int elem) return 1 if SET1 and SET2 are equivalent, return 0 otherwise. */ static int -internal_function __attribute__ ((pure)) +internal_function __attribute ((pure)) re_node_set_compare (const re_node_set *set1, const re_node_set *set2) { int i; @@ -1385,7 +1387,7 @@ re_node_set_compare (const re_node_set *set1, const re_node_set *set2) /* Return (idx + 1) if SET contains the element ELEM, return 0 otherwise. */ static int -internal_function __attribute__ ((pure)) +internal_function __attribute ((pure)) re_node_set_contains (const re_node_set *set, int elem) { unsigned int idx, right, mid; |