aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sh/casemod.c
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2011-11-21 20:51:19 -0500
committerChet Ramey <chet.ramey@case.edu>2011-11-21 20:51:19 -0500
commit0001803f0b9523c94fa2ede48eaecb047fef4524 (patch)
treef334332811e033ff966d94f6268f0629a94304b3 /lib/sh/casemod.c
parent89a92869e56aba4e4cab2d639c00a86f0545c862 (diff)
downloadandroid_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.c7
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: