diff options
author | Chet Ramey <chet.ramey@case.edu> | 2012-07-10 09:43:39 -0400 |
---|---|---|
committer | Chet Ramey <chet.ramey@case.edu> | 2012-07-10 09:43:39 -0400 |
commit | d79bb40f240c6a91f7b1617380db5f8cf8cce2a3 (patch) | |
tree | 2af3afafbe627c8eb095f3bed9bf857a7133da81 /lib/glob/glob.c | |
parent | 16b2d7f4ea7aa2e52c697bc7f623bf791725f42b (diff) | |
download | android_external_bash-d79bb40f240c6a91f7b1617380db5f8cf8cce2a3.tar.gz android_external_bash-d79bb40f240c6a91f7b1617380db5f8cf8cce2a3.tar.bz2 android_external_bash-d79bb40f240c6a91f7b1617380db5f8cf8cce2a3.zip |
Bash-4.2 patch 30
Diffstat (limited to 'lib/glob/glob.c')
-rw-r--r-- | lib/glob/glob.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/glob/glob.c b/lib/glob/glob.c index c77618f..ad9b9d9 100644 --- a/lib/glob/glob.c +++ b/lib/glob/glob.c @@ -200,8 +200,11 @@ mbskipname (pat, dname, flags) wchar_t *pat_wc, *dn_wc; size_t pat_n, dn_n; + pat_wc = dn_wc = (wchar_t *)NULL; + pat_n = xdupmbstowcs (&pat_wc, NULL, pat); - dn_n = xdupmbstowcs (&dn_wc, NULL, dname); + if (pat_n != (size_t)-1) + dn_n = xdupmbstowcs (&dn_wc, NULL, dname); ret = 0; if (pat_n != (size_t)-1 && dn_n !=(size_t)-1) @@ -221,6 +224,8 @@ mbskipname (pat, dname, flags) (pat_wc[0] != L'\\' || pat_wc[1] != L'.')) ret = 1; } + else + ret = skipname (pat, dname, flags); FREE (pat_wc); FREE (dn_wc); @@ -266,8 +271,11 @@ wdequote_pathname (pathname) /* Convert the strings into wide characters. */ n = xdupmbstowcs (&wpathname, NULL, pathname); if (n == (size_t) -1) - /* Something wrong. */ - return; + { + /* Something wrong. Fall back to single-byte */ + udequote_pathname (pathname); + return; + } orig_wpathname = wpathname; for (i = j = 0; wpathname && wpathname[i]; ) |