From 8ba5ed63db685b719dc6352728166e3ae6e41dd6 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Wed, 18 Nov 2020 16:13:02 -0500 Subject: [PATCH] commit bash-20201109 snapshot --- CHANGES | 18 ++++++++++++++++++ CHANGES-5.1 | 18 ++++++++++++++++++ CWRU/CWRU.chlog | 16 ++++++++++++++++ array.h | 2 +- config-top.h | 6 ++++-- configure | 20 ++++++++++---------- configure.ac | 2 +- lib/readline/isearch.c | 1 + subst.c | 6 +++--- test.c | 7 +++++-- tests/assoc.right | 1 + tests/assoc9.sub | 7 +++++++ tests/casemod.right | 2 -- tests/casemod.tests | 4 ++-- 14 files changed, 87 insertions(+), 23 deletions(-) diff --git a/CHANGES b/CHANGES index 57e4dd3e..7a47c7c5 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,21 @@ +This document details the changes between this version, bash-5.1-rc3, and +the previous version, bash-5.1-rc2. + +1. Changes to Bash + +a. The `assoc_expand_once' option now affects the evaluation of the -v primary + to test and the [[ compound command. + +2. Changes to Readline + +a. Fixed a bug that could cause point to be set beyond the end of the line + buffer when aborting an incremental search. + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ This document details the changes between this version, bash-5.1-rc2, and the previous version, bash-5.1-rc1. diff --git a/CHANGES-5.1 b/CHANGES-5.1 index 1a22ed77..327ce383 100644 --- a/CHANGES-5.1 +++ b/CHANGES-5.1 @@ -1,3 +1,21 @@ +This document details the changes between this version, bash-5.1-rc3, and +the previous version, bash-5.1-rc2. + +1. Changes to Bash + +a. The `assoc_expand_once' option now affects the evaluation of the -v primary + to test and the [[ compound command. + +2. Changes to Readline + +a. Fixed a bug that could cause point to be set beyond the end of the line + buffer when aborting an incremental search. + +3. New Features in Bash + +4. New Features in Readline + +------------------------------------------------------------------------------ This document details the changes between this version, bash-5.1-rc2, and the previous version, bash-5.1-rc1. diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index edb74c8f..ee5d1627 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -9153,3 +9153,19 @@ lib/readline/isearch.c Report from Detlef Vollmann [bash-5.1-rc2 frozen] + + 11/10 + ----- +lib/readline/isearch.c + - _rl_isearch_dispatch: if we are aborting the search, make sure to + call _rl_fix_point and to make sure the point and mark are less + than the new rl_end, in case they got out of sync. Report and fix + from Tillmann Osswald + +test.c + - unary_test: assume the argument has already been expanded (the code + paths for [[ and [ expand it) and add AV_NOEXPAND to the flags passed + to array_value if assoc_expand_once is enabled. Prompted by a report + from Greg Wooledge + +[bash-5.1-rc3 frozen] diff --git a/array.h b/array.h index fe218470..189d646f 100644 --- a/array.h +++ b/array.h @@ -33,8 +33,8 @@ typedef struct array { enum atype type; arrayind_t max_index; int num_elements; - struct array_element *lastref; struct array_element *head; + struct array_element *lastref; } ARRAY; typedef struct array_element { diff --git a/config-top.h b/config-top.h index a96b5587..735f75e3 100644 --- a/config-top.h +++ b/config-top.h @@ -106,9 +106,11 @@ which can be fooled under certain not-uncommon circumstances. */ /* #define SSH_SOURCE_BASHRC */ -/* Define if you want the case-capitalizing operators (~[~]) and the +/* Define if you want the case-toggling operators (~[~]) and the `capcase' variable attribute (declare -c). */ -#define CASEMOD_CAPCASE +/* TAG: bash-5.2 disable */ +#define CASEMOD_TOGGLECASE +#define CASEMOD_CAPCASE /* This is used as the name of a shell function to call when a command name is not found. If you want to name it something other than the diff --git a/configure b/configure index ee6973a3..13a19874 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh # From configure.ac for Bash 5.1, version 5.022. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 5.1-rc2. +# Generated by GNU Autoconf 2.69 for bash 5.1-rc3. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='5.1-rc2' -PACKAGE_STRING='bash 5.1-rc2' +PACKAGE_VERSION='5.1-rc3' +PACKAGE_STRING='bash 5.1-rc3' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -1427,7 +1427,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bash 5.1-rc2 to adapt to many kinds of systems. +\`configure' configures bash 5.1-rc3 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1492,7 +1492,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 5.1-rc2:";; + short | recursive ) echo "Configuration of bash 5.1-rc3:";; esac cat <<\_ACEOF @@ -1693,7 +1693,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 5.1-rc2 +bash configure 5.1-rc3 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2402,7 +2402,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bash $as_me 5.1-rc2, which was +It was created by bash $as_me 5.1-rc3, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2800,7 +2800,7 @@ ac_config_headers="$ac_config_headers config.h" BASHVERS=5.1 -RELSTATUS=rc2 +RELSTATUS=rc3 case "$RELSTATUS" in alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -21057,7 +21057,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bash $as_me 5.1-rc2, which was +This file was extended by bash $as_me 5.1-rc3, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -21123,7 +21123,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bash config.status 5.1-rc2 +bash config.status 5.1-rc3 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5b2fe4d7..dbdc5b85 100644 --- a/configure.ac +++ b/configure.ac @@ -24,7 +24,7 @@ dnl Process this file with autoconf to produce a configure script. AC_REVISION([for Bash 5.1, version 5.022])dnl define(bashvers, 5.1) -define(relstatus, rc2) +define(relstatus, rc3) AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org]) diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c index ef65e5f5..080ba3cb 100644 --- a/lib/readline/isearch.c +++ b/lib/readline/isearch.c @@ -619,6 +619,7 @@ opcode_dispatch: rl_restore_prompt(); rl_clear_message (); + _rl_fix_point (1); /* in case save_line and save_point are out of sync */ return -1; case -5: /* C-W */ diff --git a/subst.c b/subst.c index 915fd50b..9ccbf336 100644 --- a/subst.c +++ b/subst.c @@ -8820,12 +8820,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta else #if defined (CASEMOD_EXPANSIONS) /* To enable case-toggling expansions using the `~' operator character - define CASEMOD_CAPCASE in config-top.h */ -# if defined (CASEMOD_CAPCASE) + define CASEMOD_TOGGLECASE in config-top.h */ +# if defined (CASEMOD_TOGGLECASE) name = string_extract (string, &t_index, "#%^,~:-=?+/@}", SX_VARNAME); # else name = string_extract (string, &t_index, "#%^,:-=?+/@}", SX_VARNAME); -# endif /* CASEMOD_CAPCASE */ +# endif /* CASEMOD_TOGGLECASE */ #else name = string_extract (string, &t_index, "#%:-=?+/@}", SX_VARNAME); #endif /* CASEMOD_EXPANSIONS */ diff --git a/test.c b/test.c index ed1d3ffc..e2fd78b3 100644 --- a/test.c +++ b/test.c @@ -627,8 +627,11 @@ unary_test (op, arg) if (valid_array_reference (arg, 0)) { char *t; - int rtype, ret; - t = array_value (arg, 0, 0, &rtype, (arrayind_t *)0); + int rtype, ret, flags; + + /* Let's assume that this has already been expanded once. */ + flags = assoc_expand_once ? AV_NOEXPAND : 0; + t = array_value (arg, 0, flags, &rtype, (arrayind_t *)0); ret = t ? TRUE : FALSE; if (rtype > 0) /* subscript is * or @ */ free (t); diff --git a/tests/assoc.right b/tests/assoc.right index d176bcd4..e9aa9172 100644 --- a/tests/assoc.right +++ b/tests/assoc.right @@ -222,6 +222,7 @@ declare -A a=(["80's"]="Depeche Mode" ) 1+5 declare -A a=(["\$(date >&2)"]="5" ) declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" ) +foo ./assoc10.sub: line 14: declare: a: cannot convert indexed to associative array f: declare -a a ./assoc10.sub: line 17: declare: a: cannot convert associative to indexed array diff --git a/tests/assoc9.sub b/tests/assoc9.sub index 8f2a23be..b8867187 100644 --- a/tests/assoc9.sub +++ b/tests/assoc9.sub @@ -121,3 +121,10 @@ declare myarray["foo[bar"]=bleh myarray["foo"]=bleh declare -p myarray + +key='$(date >&2)' +declare -A aa +aa[$key]=foo +echo "${aa[$key]}" + +[[ -v aa[$key] ]] || echo bad assoc expansion diff --git a/tests/casemod.right b/tests/casemod.right index a5840171..df124754 100644 --- a/tests/casemod.right +++ b/tests/casemod.right @@ -43,7 +43,5 @@ Be Conservative in what you send and Liberal in what you accept BE CONSERVATIVE IN WHAT YOU SEND AND LIBERAL IN WHAT YOU ACCEPT Be conservative in what you send and liberal in what you accept BE CONSERVATIVE IN WHAT YOU SEND AND LIBERAL IN WHAT YOU ACCEPT -AcknOwlEdgEmEnt acknOwlEdgEmEnt -oeNoPHiLe OEnOphIlE abcdexyz ABCDEXYZ diff --git a/tests/casemod.tests b/tests/casemod.tests index 20cb1cf5..56ab20d9 100644 --- a/tests/casemod.tests +++ b/tests/casemod.tests @@ -114,8 +114,8 @@ echo ${TEXT2^^} M1=${S1^^[aeiou]} M2=${U2,,[AEIOU]} -echo ${M1} ${M1~} -echo ${M2} ${M2~~} +#echo ${M1} ${M1~} +#echo ${M2} ${M2~~} declare -l lower=aBcDe lower+=XyZ