[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bash -c mishandles $LINENO when in complex command
From: |
Paul Eggert |
Subject: |
bash -c mishandles $LINENO when in complex command |
Date: |
Thu, 1 Nov 2001 02:05:27 -0800 (PST) |
Configuration Information [Automatically generated, do not change]:
Machine: i386
OS: linux-gnu
Compiler: gcc
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='i386'
-DCONF_OSTYPE='linux-gnu' -DCONF_MACHTYPE='i386-pc-linux-gnu'
-DCONF_VENDOR='pc' -DSHELL -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -I.
-I/home/swt/doko/export/packages/bash/bash-2.03
-I/home/swt/doko/export/packages/bash/bash-2.03/lib -I/usr/include -g -O2
uname output: Linux dum.twinsun.com 2.2.18ss.e820-bda652a #4 SMP Tue Jun 5
11:24:08 PDT 2001 i686 unknown
Machine Type: i386-pc-linux-gnu
Bash Version: 2.03
Patch Level: 0
Release Status: release
Description:
Bash's -c option mishandles $LINENO when it is part of a
complex command. This bug caused Bash to fail some recently
proposed Autoconf tests for $LINENO. The bug still exists in
the latest Bash beta.
Repeat-By:
In the following example, the output should always be "1"; but
in the last two instances it is "2". The Korn shell gets it right.
$ (echo '(echo $LINENO'; echo ')') | bash
1
$ (echo '{ echo $LINENO'; echo '}') | bash
1
$ bash -c '(echo $LINENO
> )'
2
$ bash -c '{ echo $LINENO
> }'
2
Fix:
The following patch assumes the latest Bash beta, plus all the patches
I've already submitted.
2001-11-01 Paul Eggert <eggert@twinsun.com>
* shell.c (main): Initialize 'executing' to 1 when executing
a -c option when ONESHOT is defined. This fixes a bug with
$LINENO in some -c options that contain newlines.
===================================================================
RCS file: shell.c,v
retrieving revision 2.5.1.2.0.2
retrieving revision 2.5.1.2.0.3
diff -pu -r2.5.1.2.0.2 -r2.5.1.2.0.3
--- shell.c 2001/10/14 05:26:36 2.5.1.2.0.2
+++ shell.c 2001/11/01 10:01:28 2.5.1.2.0.3
@@ -599,6 +599,7 @@ main (argc, argv, env)
arg_index = bind_args (argv, arg_index, argc, 0);
startup_state = 2;
#if defined (ONESHOT)
+ executing = 1;
run_one_command (local_pending_command);
exit_shell (last_command_exit_value);
#else /* ONESHOT */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bash -c mishandles $LINENO when in complex command,
Paul Eggert <=