diff options
author | Chet Ramey <chet.ramey@case.edu> | 2011-11-21 20:51:19 -0500 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2011-11-21 20:51:19 -0500 |
commit | 0001803f0b9523c94fa2ede48eaecb047fef4524 (patch) | |
tree | f334332811e033ff966d94f6268f0629a94304b3 /lib/sh/casemod.c | |
parent | 89a92869e56aba4e4cab2d639c00a86f0545c862 (diff) | |
download | android_external_bash-0001803f0b9523c94fa2ede48eaecb047fef4524.tar.gz android_external_bash-0001803f0b9523c94fa2ede48eaecb047fef4524.tar.bz2 android_external_bash-0001803f0b9523c94fa2ede48eaecb047fef4524.zip |
Bash-4.1 distribution source
Diffstat (limited to 'lib/sh/casemod.c')
-rw-r--r-- | lib/sh/casemod.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/sh/casemod.c b/lib/sh/casemod.c index b7e0850..d85549a 100644 --- a/lib/sh/casemod.c +++ b/lib/sh/casemod.c @@ -107,6 +107,7 @@ sh_modcase (string, pat, flags) wchar_t nwc; char mb[MB_LEN_MAX+1]; int mlen; + size_t m; mbstate_t state; #endif @@ -210,7 +211,11 @@ sh_modcase (string, pat, flags) #if defined (HANDLE_MULTIBYTE) else { - mbrtowc (&wc, string + start, end - start, &state); + m = mbrtowc (&wc, string + start, end - start, &state); + if (MB_INVALIDCH (m)) + wc = (wchar_t)string[start]; + else if (MB_NULLWCH (m)) + wc = L'\0'; switch (nop) { default: |