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
|
Patch006: tcsh-6.19.00-006-_SIGWINCH-added.patch
|
||||||
Patch007: tcsh-6.19.00-007-fix-handling-of-invalid-unicode-characters.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
|
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:
|
# 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-006-_SIGWINCH-added.patch
|
||||||
tcsh-6.19.00-007-fix-handling-of-invalid-unicode-characters.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-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
|
* 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
|
- Drop tcsh-6.15.00-closem.patch - issue not reproducible, patch not accepted by upstream
|
||||||
|
Loading…
Reference in New Issue
Block a user