summaryrefslogtreecommitdiff
blob: bef5586d0efc4f8499b33b7a36680b2bc7b75b9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
https://savannah.gnu.org/support/?110745
https://lists.gnu.org/archive/html/bug-bash/2022-10/msg00103.html

Note that both documents make the claim that only interactive shells are
affected. This is false, as is demonstrated below.

$ bash -c '[[ ]]; echo fin'; echo $?
0

diff --git a/parse.y b/parse.y
index 11b71d4..02b2af1 100644
--- parse.y
+++ parse.y
@@ -2899,7 +2899,7 @@ yylex ()
 #if defined (YYERRCODE) && !defined (YYUNDEF)
     current_token = YYERRCODE;
 #else
-    current_token = YYerror;
+    current_token = YYUNDEF;
 #endif
 
   return (current_token);
@@ -4156,7 +4156,9 @@ parse_comsub (qc, open, close, lenp, flags)
       shell_eof_token = ps.eof_token;
       expand_aliases = ps.expand_aliases;
 
-      /* yyparse() has already called yyerror() and reset_parser() */
+      /* yyparse() has already called yyerror() and reset_parser(), so we set
+	 PST_NOERROR to avoid a redundant error message. */
+      parser_state |= PST_NOERROR;
       return (&matched_pair_error);
     }
   else if (r != 0)