tcsh-6.19.00-009-fix-parsing-of-if-statement.patch added
> Fix parsing of if statement with a missing space after the if closing > parenthesis (Fridolin Pokorny)
This commit is contained in:
parent
6950b90e74
commit
8247c9850e
145
tcsh-6.19.00-009-fix-parsing-of-if-statement.patch
Normal file
145
tcsh-6.19.00-009-fix-parsing-of-if-statement.patch
Normal file
@ -0,0 +1,145 @@
|
||||
From 132f9f91a87e313d3702aaa3ac85bdf060207564 Mon Sep 17 00:00:00 2001
|
||||
From: christos <christos>
|
||||
Date: Mon, 6 Jul 2015 21:52:45 +0000
|
||||
Subject: [PATCH] Fix parsing of if statement with a missing space after
|
||||
the if closing parenthesis (Fridolin Pokorny)
|
||||
|
||||
---
|
||||
Fixes | 1 +
|
||||
Makefile.in | 4 ++--
|
||||
sh.func.c | 11 +++++++++
|
||||
tests/parenthesis.at | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
tests/testsuite.at | 1 +
|
||||
5 files changed, 78 insertions(+), 2 deletions(-)
|
||||
create mode 100644 tests/parenthesis.at
|
||||
|
||||
diff --git a/Fixes b/Fixes
|
||||
index aa779b1..07afe71 100644
|
||||
--- a/Fixes
|
||||
+++ b/Fixes
|
||||
@@ -1,3 +1,4 @@
|
||||
+ 3. Fix parsing of 'if (cond)then' (Fridolin Pokorny)
|
||||
2. PR/437: Fix handling of invalid unicode characters.
|
||||
1. PR/451: Fix error messages containing %c to be always '%c'
|
||||
|
||||
diff --git a/Makefile.in b/Makefile.in
|
||||
index bfe51b6..6d1f964 100644
|
||||
--- a/Makefile.in
|
||||
+++ b/Makefile.in
|
||||
@@ -415,8 +415,8 @@ AVSRCS= Fixes MAKEDIFFS MAKESHAR NewThings README FAQ \
|
||||
tests/testsuite.at aclocal.m4
|
||||
TESTFILES= tests/aliases.at tests/arguments.at tests/commands.at \
|
||||
tests/expr.at tests/lexical.at tests/mb-eucjp.at \
|
||||
- tests/mb-utf8.at tests/noexec.at tests/syntax.at tests/subst.at \
|
||||
- tests/variables.at tests/sh.dol.at
|
||||
+ tests/mb-utf8.at tests/noexec.at tests/parenthesis.at tests/syntax.at \
|
||||
+ tests/subst.at tests/variables.at tests/sh.dol.at
|
||||
|
||||
VHSRCS=${PVSRCS} ${AVSRCS}
|
||||
|
||||
diff --git a/sh.func.c b/sh.func.c
|
||||
index 7b70760..bb670b8 100644
|
||||
--- a/sh.func.c
|
||||
+++ b/sh.func.c
|
||||
@@ -1045,6 +1045,17 @@ getword(struct Strbuf *wp)
|
||||
goto past;
|
||||
if (wp)
|
||||
Strbuf_append1(wp, (Char) c);
|
||||
+ if (!d && c == ')') {
|
||||
+ if (!first && wp) {
|
||||
+ goto past_word_end;
|
||||
+ } else {
|
||||
+ if (wp) {
|
||||
+ wp->len = 1;
|
||||
+ Strbuf_terminate(wp);
|
||||
+ }
|
||||
+ return found;
|
||||
+ }
|
||||
+ }
|
||||
if (!first && !d && c == '(') {
|
||||
if (wp)
|
||||
goto past_word_end;
|
||||
diff --git a/tests/parenthesis.at b/tests/parenthesis.at
|
||||
new file mode 100644
|
||||
index 0000000..2832b50
|
||||
--- /dev/null
|
||||
+++ b/tests/parenthesis.at
|
||||
@@ -0,0 +1,63 @@
|
||||
+# Parenthesis handling
|
||||
+
|
||||
+AT_SETUP([Parenthesis no space])
|
||||
+AT_DATA([no-space.csh],
|
||||
+[[
|
||||
+if(1 == 1) then
|
||||
+ echo 1
|
||||
+else
|
||||
+ if (2 == 22 )then
|
||||
+ echo 2
|
||||
+ endif
|
||||
+ echo 3
|
||||
+endif
|
||||
+]])
|
||||
+AT_CHECK([tcsh -f < no-space.csh], ,[1
|
||||
+])
|
||||
+
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+AT_SETUP([Parenthesis space])
|
||||
+AT_DATA([space.csh],
|
||||
+[[
|
||||
+if (1 == 1) then
|
||||
+ echo 1
|
||||
+else
|
||||
+ if (2 == 22 ) then
|
||||
+ echo 2
|
||||
+ endif
|
||||
+ echo 3
|
||||
+endif
|
||||
+]])
|
||||
+AT_CHECK([tcsh -f < space.csh], ,[1
|
||||
+])
|
||||
+
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+AT_SETUP([Parenthesis space escaped])
|
||||
+AT_DATA([space-escaped.csh],
|
||||
+[[
|
||||
+if (1 == 1) then
|
||||
+ echo 1
|
||||
+else
|
||||
+ if (2 == 22 )\ then
|
||||
+ echo 2
|
||||
+ endif
|
||||
+ echo 3
|
||||
+endif
|
||||
+]])
|
||||
+AT_CHECK([tcsh -f < space-escaped.csh], ,[1
|
||||
+])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
+AT_SETUP([Parenthesis escaped])
|
||||
+AT_DATA([parenthesis-escaped.csh],
|
||||
+[[
|
||||
+if ( ')' == \) ) then
|
||||
+ echo 1
|
||||
+endif
|
||||
+]])
|
||||
+AT_CHECK([tcsh -f < parenthesis-escaped.csh], ,[1
|
||||
+])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
diff --git a/tests/testsuite.at b/tests/testsuite.at
|
||||
index fd1d7b9..d358a7f 100644
|
||||
--- a/tests/testsuite.at
|
||||
+++ b/tests/testsuite.at
|
||||
@@ -18,6 +18,7 @@ m4_include([expr.at])
|
||||
m4_include([lexical.at])
|
||||
m4_include([mb-eucjp.at])
|
||||
m4_include([mb-utf8.at])
|
||||
+m4_include([parenthesis.at])
|
||||
m4_include([subst.at])
|
||||
m4_include([syntax.at])
|
||||
m4_include([variables.at])
|
||||
--
|
||||
2.5.5
|
||||
|
@ -37,6 +37,7 @@ Patch005: tcsh-6.19.00-005-ge0-is-always-true-for-unsigned.patch
|
||||
Patch006: tcsh-6.19.00-006-_SIGWINCH-added.patch
|
||||
Patch007: tcsh-6.19.00-007-fix-handling-of-invalid-unicode-characters.patch
|
||||
Patch008: tcsh-6.19.00-008-fix-ln-1-completion.patch
|
||||
Patch009: tcsh-6.19.00-009-fix-parsing-of-if-statement.patch
|
||||
|
||||
|
||||
# Downstream patches -- these should be always included when doing rebase:
|
||||
@ -166,6 +167,7 @@ fi
|
||||
tcsh-6.19.00-006-_SIGWINCH-added.patch
|
||||
tcsh-6.19.00-007-fix-handling-of-invalid-unicode-characters.patch
|
||||
tcsh-6.19.00-008-fix-ln-1-completion.patch
|
||||
tcsh-6.19.00-009-fix-parsing-of-if-statement.patch
|
||||
|
||||
* Thu Apr 21 2016 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 6.19.00-6
|
||||
- Drop tcsh-6.15.00-closem.patch - issue not reproducible, patch not accepted by upstream
|
||||
|
Loading…
Reference in New Issue
Block a user