]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - lib/sh/casemod.c
Bash-4.1 distribution source
[thirdparty/bash.git] / lib / sh / casemod.c
index b7e085018eb2fa994a8252705e533da1c1c2ef0c..d85549a22cf6baeb5e1c82998c7a7debd9acca38 100644 (file)
@@ -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: