aboutsummaryrefslogtreecommitdiffstats
path: root/lib/glob/glob.c
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2012-07-10 09:43:39 -0400
committerChet Ramey <chet.ramey@case.edu>2012-07-10 09:43:39 -0400
commitd79bb40f240c6a91f7b1617380db5f8cf8cce2a3 (patch)
tree2af3afafbe627c8eb095f3bed9bf857a7133da81 /lib/glob/glob.c
parent16b2d7f4ea7aa2e52c697bc7f623bf791725f42b (diff)
downloadandroid_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.c14
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]; )