bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: string replace with multibyte chars and extglob fails with bash-4.2


From: Chet Ramey
Subject: Re: string replace with multibyte chars and extglob fails with bash-4.2
Date: Sun, 22 Apr 2012 16:29:55 -0400
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:11.0) Gecko/20120327 Thunderbird/11.0.1

On 4/21/12 3:27 PM, Andreas Schwab wrote:
> Mike Frysinger <vapier@gentoo.org> writes:
> 
>> first set your locale to something unicode based:
>> export LC_ALL=en_US.UTF-8
>>
>> then try the simple script (from Ulrich Müller):
>> $ cat test.sh
>> shopt -s extglob
>> text="aaaäöü"
>> echo "${text} ${text//?aa} ${text//\aaa}"
>>
>> with bash-4.1_p2, i get:
>> aaaäöü äöü äöü
>>
>> but with bash-4.2_p8 ... 4.2_p24 (just what i have locally):
>> aaaäöü aaaäöü aaaäöü
> 
> diff --git a/subst.c b/subst.c
> index 9feaa9c..ebd5138 100644
> --- a/subst.c
> +++ b/subst.c
> @@ -4161,7 +4161,7 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, 
> sp, ep)
>    simple = (wpat[0] != L'\\' && wpat[0] != L'*' && wpat[0] != L'?' && 
> wpat[0] != L'[');
>  #if defined (EXTENDED_GLOB)
>    if (extended_glob)
> -    simple |= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && 
> wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
> +    simple &= (wpat[1] != L'(' || (wpat[0] != L'*' && wpat[0] != L'?' && 
> wpat[0] != L'+' && wpat[0] != L'!' && wpat[0] != L'@')); /*)*/
>  #endif

Thanks; this is the right fix.

Chet
-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    chet@case.edu    http://cnswww.cns.cwru.edu/~chet/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]