OSDN Git Service

* dcrt0.cc (globify): Make multibyte-aware.
authorcorinna <corinna>
Fri, 17 Apr 2009 14:51:44 +0000 (14:51 +0000)
committercorinna <corinna>
Fri, 17 Apr 2009 14:51:44 +0000 (14:51 +0000)
winsup/cygwin/ChangeLog
winsup/cygwin/dcrt0.cc

index b81dba3..d85bb0a 100644 (file)
@@ -1,5 +1,9 @@
 2009-04-17  Corinna Vinschen  <corinna@vinschen.de>
 
+       * dcrt0.cc (globify): Make multibyte-aware.
+
+2009-04-17  Corinna Vinschen  <corinna@vinschen.de>
+
        * flock.cc (class inode_t): Add i_wait member and matching methods
        wait(), unwait(), and waiting().
        (inode_t::inode_t): Initialize i_wait to 0.
index 70d2650..eddd114 100644 (file)
@@ -229,7 +229,15 @@ globify (char *word, char **&argv, int &argc, int &argvlen)
            else if (s[1] == quote || s[1] == '\\')
              s++;
            *p++ = '\\';
-           *p++ = *s;
+           size_t cnt = mbtowc (NULL, s, MB_CUR_MAX);
+           if (cnt <= 1 || cnt == (size_t)-1)
+             *p++ = *s;
+           else
+             {
+               --s;
+               while (cnt-- > 0)
+                 *p++ = *++s;
+             }
          }
        if (*s == quote)
          p--;