aboutsummaryrefslogtreecommitdiff
path: root/shell/ash.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/ash.c')
-rw-r--r--shell/ash.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/shell/ash.c b/shell/ash.c
index ad50537a1..dc1a55a6b 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -6236,9 +6236,7 @@ memtodest(const char *p, size_t len, int syntax, int quotes)
6236 if (quotes & QUOTES_ESC) { 6236 if (quotes & QUOTES_ESC) {
6237 int n = SIT(c, syntax); 6237 int n = SIT(c, syntax);
6238 if (n == CCTL 6238 if (n == CCTL
6239 || (((quotes & EXP_FULL) || syntax != BASESYNTAX) 6239 || (syntax != BASESYNTAX && n == CBACK)
6240 && n == CBACK
6241 )
6242 ) { 6240 ) {
6243 USTPUTC(CTLESC, q); 6241 USTPUTC(CTLESC, q);
6244 } 6242 }
@@ -7639,7 +7637,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len)
7639 } 7637 }
7640 } 7638 }
7641 } else { 7639 } else {
7642 if (*p == '\\') 7640 if (*p == '\\' && p[1])
7643 esc++; 7641 esc++;
7644 if (p[esc] == '/') { 7642 if (p[esc] == '/') {
7645 if (metaflag) 7643 if (metaflag)
@@ -7653,7 +7651,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len)
7653 return; 7651 return;
7654 p = name; 7652 p = name;
7655 do { 7653 do {
7656 if (*p == '\\') 7654 if (*p == '\\' && p[1])
7657 p++; 7655 p++;
7658 *enddir++ = *p; 7656 *enddir++ = *p;
7659 } while (*p++); 7657 } while (*p++);
@@ -7665,7 +7663,7 @@ expmeta(exp_t *exp, char *name, unsigned name_len, unsigned expdir_len)
7665 if (name < start) { 7663 if (name < start) {
7666 p = name; 7664 p = name;
7667 do { 7665 do {
7668 if (*p == '\\') 7666 if (*p == '\\' && p[1])
7669 p++; 7667 p++;
7670 *enddir++ = *p++; 7668 *enddir++ = *p++;
7671 } while (p < start); 7669 } while (p < start);