1379e36227
Related to BZ: #1301857 > PR/526: David Kaspar: Quote backslashes properly so that they can be > preserved in `` expansions.
54 lines
1.4 KiB
Diff
54 lines
1.4 KiB
Diff
From 9a763dd9b9b88f9c8cd235fddfda839c6b7971cb Mon Sep 17 00:00:00 2001
|
|
From: christos <christos>
|
|
Date: Tue, 8 Mar 2016 15:45:26 +0000
|
|
Subject: [PATCH] PR/526: David Kaspar: Quote backslashes properly so that they
|
|
can be preserved in `` expansions.
|
|
|
|
---
|
|
Fixes | 2 ++
|
|
sh.glob.c | 4 +++-
|
|
sh.lex.c | 2 +-
|
|
3 files changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/Fixes b/Fixes
|
|
index 1fe33e8..b182f1a 100644
|
|
--- a/Fixes
|
|
+++ b/Fixes
|
|
@@ -1,3 +1,5 @@
|
|
+ 10. PR/526: Quote backslashes properly so they can be preserved in ``
|
|
+ expansions
|
|
9. Fix memory leak for paraml
|
|
8. Add notempty and ask values for the noclobber setting (Martin Tournoij)
|
|
7. more correct $wordchars for vimode (Luke Mewburn)
|
|
diff --git a/sh.glob.c b/sh.glob.c
|
|
index dce0217..895a603 100644
|
|
--- a/sh.glob.c
|
|
+++ b/sh.glob.c
|
|
@@ -878,7 +878,9 @@ backeval(struct blk_buf *bb, struct Strbuf *word, Char *cp, int literal)
|
|
if (!quoted && (c == ' ' || c == '\t'))
|
|
break;
|
|
cnt++;
|
|
- Strbuf_append1(word, c | quoted);
|
|
+ if (c == '\\' || quoted)
|
|
+ c |= QUOTE;
|
|
+ Strbuf_append1(word, c);
|
|
}
|
|
/*
|
|
* Unless at end-of-file, we will form a new word here if there were
|
|
diff --git a/sh.lex.c b/sh.lex.c
|
|
index 8a6d1b0..eae8a03 100644
|
|
--- a/sh.lex.c
|
|
+++ b/sh.lex.c
|
|
@@ -386,7 +386,7 @@ loop:
|
|
*/
|
|
c |= QUOTE;
|
|
ungetC(c);
|
|
- c = '\\';
|
|
+ c = '\\' | QUOTE;
|
|
}
|
|
}
|
|
}
|
|
--
|
|
2.5.5
|
|
|