diff --git a/parse.y b/parse.y index d887eec..918a1de 100644 --- a/parse.y +++ b/parse.y @@ -4229,7 +4229,7 @@ xparse_dolparen (base, string, indp, flags) { sh_parser_state_t ps; sh_input_line_state_t ls; - int orig_ind, nc, sflags, start_lineno; + int orig_ind, nc, sflags, start_lineno, local_extglob; char *ret, *ep, *ostring; /*debug_parser(1);*/ @@ -4272,7 +4272,7 @@ xparse_dolparen (base, string, indp, flags) old value will be restored by restore_parser_state(). */ expand_aliases = 0; #if defined (EXTENDED_GLOB) - global_extglob = extended_glob; /* for reset_parser() */ + local_extglob = global_extglob = extended_glob; /* for reset_parser() */ #endif token_to_read = DOLPAREN; /* let's trick the parser */ @@ -4290,6 +4290,9 @@ xparse_dolparen (base, string, indp, flags) restore_input_line_state (&ls); restore_parser_state (&ps); +#if defined (EXTENDED_GLOB) + extended_glob = local_extglob; +#endif token_to_read = 0; /* If parse_string returns < 0, we need to jump to top level with the