commit bash-snap-20181017 snapshot

This commit is contained in:
Chet Ramey
2018-10-18 11:13:57 -04:00
parent 93e3d9f6ae
commit f19b1b7334
10 changed files with 70 additions and 19 deletions
+17
View File
@@ -4570,3 +4570,20 @@ trap.c
increment/decrement evalnest accordingly, since trap actions
are processed as if run by `eval'. Feature suggsted by Mike
Gerwitz <mtg@gnu.org>
10/16
-----
expr.c
- expr_skipsubscript: new function, calls skipsubscript with flags
similar to arrayfunc.c:valid_array_subscript if assoc_expand_once
is set and it looks like we've already expanded the subscript of
an associative array. Reported back on 8/27 by Grisha Levit
<grishalevit@gmail.com>
- readtok: call expr_skipsubscript instead of skipsubscript
arrayfunc.c
- valid_array_reference: call skipsubscript with a third arg computed
from the VA_NOEXPAND flag only if we're expanding an associative
array subscript -- we already figure out whether or not we are
[bumped release status to beta2]
+5 -2
View File
@@ -779,7 +779,7 @@ unbind_array_element (var, sub, flags)
char *akey;
ARRAY_ELEMENT *ae;
len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var)));
len = skipsubscript (sub, 0, (flags&1) || (var && assoc_p(var))); /* XXX */
if (sub[len] != ']' || len == 0)
{
builtin_error ("%s[%s: %s", var->name, sub, _(bash_badsub_errmsg));
@@ -915,9 +915,12 @@ valid_array_reference (name, flags)
if (isassoc && ((flags & (VA_NOEXPAND|VA_ONEWORD)) == (VA_NOEXPAND|VA_ONEWORD)))
len = strlen (t) - 1;
else if (isassoc)
len = skipsubscript (t, 0, flags&VA_NOEXPAND); /* VA_NOEXPAND must be 1 */
else
/* Check for a properly-terminated non-null subscript. */
len = skipsubscript (t, 0, flags&VA_NOEXPAND); /* VA_NOEXPAND must be 1 */
len = skipsubscript (t, 0, 0); /* arithmetic expression */
if (t[len] != ']' || len == 1 || t[len+1] != '\0')
return 0;
Vendored
+10 -10
View File
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac for Bash 5.0, version 5.003.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for bash 5.0-beta.
# Generated by GNU Autoconf 2.69 for bash 5.0-beta2.
#
# Report bugs to <bug-bash@gnu.org>.
#
@@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
PACKAGE_VERSION='5.0-beta'
PACKAGE_STRING='bash 5.0-beta'
PACKAGE_VERSION='5.0-beta2'
PACKAGE_STRING='bash 5.0-beta2'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
PACKAGE_URL=''
@@ -1394,7 +1394,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.0-beta to adapt to many kinds of systems.
\`configure' configures bash 5.0-beta2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1459,7 +1459,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of bash 5.0-beta:";;
short | recursive ) echo "Configuration of bash 5.0-beta2:";;
esac
cat <<\_ACEOF
@@ -1655,7 +1655,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
bash configure 5.0-beta
bash configure 5.0-beta2
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2364,7 +2364,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.0-beta, which was
It was created by bash $as_me 5.0-beta2, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2759,7 +2759,7 @@ ac_config_headers="$ac_config_headers config.h"
BASHVERS=5.0
RELSTATUS=beta
RELSTATUS=beta2
case "$RELSTATUS" in
alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -16821,7 +16821,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.0-beta, which was
This file was extended by bash $as_me 5.0-beta2, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -16887,7 +16887,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.0-beta
bash config.status 5.0-beta2
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
+1 -1
View File
@@ -24,7 +24,7 @@ dnl Process this file with autoconf to produce a configure script.
AC_REVISION([for Bash 5.0, version 5.003])dnl
define(bashvers, 5.0)
define(relstatus, beta)
define(relstatus, beta2)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
+22 -1
View File
@@ -340,6 +340,27 @@ expr_bind_variable (lhs, rhs)
}
#if defined (ARRAY_VARS)
/* This is similar to the logic in arrayfunc.c:valid_array_subscript when
you pass VA_NOEXPAND. */
static char *
expr_skipsubscript (vp, cp)
char *vp, *cp;
{
int flags, isassoc;
SHELL_VAR *entry;
isassoc = 0;
entry = 0;
if (assoc_expand_once & already_expanded)
{
*cp = '\0';
isassoc = legal_identifier (vp) && (entry = find_variable (vp)) && assoc_p (entry);
*cp = '['; /* ] */
}
flags = (isassoc && assoc_expand_once && already_expanded) ? VA_NOEXPAND : 0;
return (skipsubscript (cp, 0, flags));
}
/* Rewrite tok, which is of the form vname[expression], to vname[ind], where
IND is the already-calculated value of expression. */
static void
@@ -1316,7 +1337,7 @@ readtok ()
#if defined (ARRAY_VARS)
if (c == '[')
{
e = skipsubscript (cp, 0, 1); /* XXX - arg 3 was 0 */
e = expr_skipsubscript (tp, cp); /* XXX - was skipsubscript */
if (cp[e] == ']')
{
cp += e + 1;
+3
View File
@@ -530,6 +530,9 @@ foo
6
./array23.sub: line 21: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
./array23.sub: line 22: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
0
0
0
IFS=: ${var-$*}
abc
def ghi
+6
View File
@@ -20,3 +20,9 @@ typeset -a a
echo $((1+a[$index]))
echo $((1+a[\$index]))
echo "1+${a[$index]}"
# intermediate problems discovered while bash-5.0 was in testing
a=0
echo $(( a[a[0]] ))
echo ${a[a[a[0]]]}
echo $(( a[a[a[0]]] ))
+3 -3
View File
@@ -84,9 +84,9 @@ after
exit code: 1
exit code: 1
exit code: 1
exit code: 127
exit code: 127
exit code: 127
exit code: 1
exit code: 1
exit code: 1
a
b
c
+2 -1
View File
@@ -4,7 +4,8 @@ trap 'rm -f $TMPFILE' 0
rm -f $TMPFILE
set -e
exit_handler() { echo "exit code: $?" ; touch $TMPFILE; }
# we normalize the exit code to accommodate false returning 255 on Solaris
exit_handler() { echo "exit code: $(( $? != 0 ))" ; touch $TMPFILE; }
false() { ! :; }
notfound() { nosuchcommand ; }
syntaxerror() { !:; }
+1 -1
View File
@@ -315,7 +315,7 @@ run_pending_traps ()
#endif
/* could check for running the trap handler for the same signal here
(running_trap == sig+1) */
if (evalnest_max && evalnest > evalnest_max)
if (evalnest_max > 0 && evalnest > evalnest_max)
{
internal_error (_("trap handler: maximum trap handler level exceeded (%d)"), evalnest_max);
evalnest = 0;