summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--Src/lex.c12
2 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index b227ac0c1..782dd06f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2009-02-26 Peter Stephenson <p.w.stephenson@ntlworld.com>
+
+ * 26617, c.f. Tomáš Smetana, 26610: Src/lex.c: comments
+ weren't handled in $(...).
+
2009-02-26 Peter Stephenson <pws@csr.com>
* Frank Terbeck: 26612: Doc/Zsh/contrib.yo: VCS info documentation
@@ -11247,5 +11252,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.4581 $
+* $Revision: 1.4582 $
*****************************************************
diff --git a/Src/lex.c b/Src/lex.c
index 5637a2106..6e14612f7 100644
--- a/Src/lex.c
+++ b/Src/lex.c
@@ -1802,16 +1802,18 @@ exalias(void)
static int
skipcomm(void)
{
- int pct = 1, c;
+ int pct = 1, c, start = 1;
cmdpush(CS_CMDSUBST);
SETPARBEGIN
c = Inpar;
do {
+ int iswhite;
add(c);
c = hgetc();
if (itok(c) || lexstop)
break;
+ iswhite = isep(c);
switch (c) {
case '(':
pct++;
@@ -1854,7 +1856,15 @@ skipcomm(void)
else
add(c);
break;
+ case '#':
+ if (start) {
+ add(c);
+ while ((c = hgetc()) != '\n' && !lexstop)
+ add(c);
+ }
+ break;
}
+ start = iswhite;
}
while (pct);
if (!lexstop)