diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-02-20 21:18:29 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-02-20 21:18:29 +0200 |
commit | be22a484b62bec35c3a9f3c41cd7a52859e62725 (patch) | |
tree | 40b0329497770af39e6ea05f24707597e09e5e0a /regex_internal.c | |
parent | 4e18d68de5a9aa2ab9c1860937dae4c467392f29 (diff) | |
parent | a01313fdef8d73580662308d3e450dc24d7d4c08 (diff) | |
download | egawk-be22a484b62bec35c3a9f3c41cd7a52859e62725.tar.gz egawk-be22a484b62bec35c3a9f3c41cd7a52859e62725.tar.bz2 egawk-be22a484b62bec35c3a9f3c41cd7a52859e62725.zip |
Merge branch 'master' into feature/cmake
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; |