command is not found by search_for_command. Report and fix from
Xiami <i@f2light.com>
-
+[bash-5.2-rc3 frozen]
+
+ 8/27
+ ----
+parse.y
+ - parse_comsub: restore extended_glob to a local copy (local_extglob)
+ only if we changed it; a safer way to do it. Fixes extglob change
+ issue reported by Kerin Millar <kfm@plushkava.net>
+ - cond_term: restore extended_glob to a local copy; safer than using
+ global_extglob, which we will reserve for error recovery
int
rl_vi_yank_pop (int count, int key)
{
- int l, n;
+ int l, n, origpoint;
if (((rl_last_func != rl_vi_yank_pop) && (rl_last_func != rl_vi_put)) ||
!rl_kill_ring)
}
l = strlen (rl_kill_ring[rl_kill_index]);
+#if 0 /* TAG:readline-8.3 8/29/2022 matteopaolini1995@gmail.com */
+ origpoint = rl_point;
+ n = rl_point - l + 1;
+#else
n = rl_point - l;
+#endif
if (n >= 0 && STREQN (rl_line_buffer + n, rl_kill_ring[rl_kill_index], l))
{
+#if 0 /* TAG:readline-8.3 */
+ rl_delete_text (n, n + l); /* remember vi cursor positioning */
+ rl_point = origpoint - l;
+#else
rl_delete_text (n, rl_point);
rl_point = n;
+#endif
rl_kill_index--;
if (rl_kill_index < 0)
rl_kill_index = rl_kill_ring_length - 1;
int *lenp, flags;
{
int peekc, r;
- int start_lineno;
+ int start_lineno, local_extglob;
char *ret, *tcmd;
int retlen;
sh_parser_state_t ps;
if (expand_aliases)
expand_aliases = posixly_correct != 0;
#if defined (EXTENDED_GLOB)
- global_extglob = extended_glob;
if (shell_compatibility_level <= 51)
- extended_glob = 1;
+ {
+ local_extglob = global_extglob = extended_glob;
+ extended_glob = 1;
+ }
#endif
current_token = '\n'; /* XXX */
}
#if defined (EXTENDED_GLOB)
- extended_glob = global_extglob;
+ if (shell_compatibility_level <= 51)
+ extended_glob = local_extglob;
#endif
parsed_command = global_command;
old value will be restored by restore_parser_state(). */
expand_aliases = 0;
#if defined (EXTENDED_GLOB)
- global_extglob = extended_glob;
+ global_extglob = extended_glob; /* for reset_parser() */
#endif
token_to_read = DOLPAREN; /* let's trick the parser */
{
WORD_DESC *op;
COND_COM *term, *tleft, *tright;
- int tok, lineno;
+ int tok, lineno, local_extglob;
char *etext;
/* Read a token. It can be a left paren, a `!', a unary operator, or a
}
/* rhs */
+ local_extglob = extended_glob;
if (parser_state & PST_EXTPAT)
extended_glob = 1;
tok = read_token (READ);
if (parser_state & PST_EXTPAT)
- extended_glob = global_extglob;
+ extended_glob = local_extglob;
parser_state &= ~(PST_REGEXP|PST_EXTPAT);
if (tok == WORD)