mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-08 17:42:12 +03:00
posix: Sync regex code with gnulib
It sync with gnulib commit 43ee1a6bf. The main change is 9682f18e9. (which does not have a meaniful description). Checked on x86_64-linux-gnu.
This commit is contained in:
@@ -300,18 +300,20 @@ build_wcs_upper_buffer (re_string_t *pstr)
|
||||
while (byte_idx < end_idx)
|
||||
{
|
||||
wchar_t wc;
|
||||
unsigned char ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
|
||||
|
||||
if (isascii (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx])
|
||||
&& mbsinit (&pstr->cur_state))
|
||||
if (isascii (ch) && mbsinit (&pstr->cur_state))
|
||||
{
|
||||
/* In case of a singlebyte character. */
|
||||
pstr->mbs[byte_idx]
|
||||
= toupper (pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx]);
|
||||
/* The next step uses the assumption that wchar_t is encoded
|
||||
ASCII-safe: all ASCII values can be converted like this. */
|
||||
pstr->wcs[byte_idx] = (wchar_t) pstr->mbs[byte_idx];
|
||||
++byte_idx;
|
||||
continue;
|
||||
wchar_t wcu = __towupper (ch);
|
||||
if (isascii (wcu))
|
||||
{
|
||||
pstr->mbs[byte_idx] = wcu;
|
||||
pstr->wcs[byte_idx] = wcu;
|
||||
byte_idx++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
remain_len = end_idx - byte_idx;
|
||||
@@ -348,7 +350,6 @@ build_wcs_upper_buffer (re_string_t *pstr)
|
||||
{
|
||||
/* It is an invalid character, an incomplete character
|
||||
at the end of the string, or '\0'. Just use the byte. */
|
||||
int ch = pstr->raw_mbs[pstr->raw_mbs_idx + byte_idx];
|
||||
pstr->mbs[byte_idx] = ch;
|
||||
/* And also cast it to wide char. */
|
||||
pstr->wcs[byte_idx++] = (wchar_t) ch;
|
||||
|
Reference in New Issue
Block a user