- Added bash32-026 upstream official patch

- Added bash32-027 upstream official patch (#249987)
- Added bash32-028 upstream official patch
- Added bash32-029 upstream official patch (#286861)
- Added bash32-030 upstream official patch
- Added bash32-031 upstream official patch (#358231)
- Added bash32-032 upstream official patch
- Added bash32-033 upstream official patch
- Fix insert command repeating in vi mode (#190350)
This commit is contained in:
Tomas Janousek 2008-01-15 13:55:03 +00:00
parent fe0b9cfa2a
commit 4fb09911e3
12 changed files with 689 additions and 43 deletions

133
bash-3.2-190350.patch Normal file
View File

@ -0,0 +1,133 @@
#190350: vi mode glitch
Whenever you do some non-inserting edit command, like 'x' or 'd',
that becomes the command-to-repeat and no further insertions may be repeated.
1. Start a new bash shell
2. 'set -o vi'
2. Type 'kekepop<esc>hxi\<esc>.'
3. You end up with 'kekepp' instead of 'kekep\\p'.
This patch fixes it and tries to fix redoing the 'I' command as well.
I'm not sure about 'c', though.
Signed-off-by: Tomas Janousek <tomi@nomi.cz>
---
lib/readline/misc.c | 2 +-
lib/readline/readline.c | 2 +-
lib/readline/readline.h | 1 +
lib/readline/vi_keymap.c | 2 +-
lib/readline/vi_mode.c | 21 +++++++++++++++++++--
5 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/lib/readline/misc.c b/lib/readline/misc.c
index e9c72c5..35d6348 100644
--- a/lib/readline/misc.c
+++ b/lib/readline/misc.c
@@ -560,7 +560,7 @@ rl_vi_editing_mode (count, key)
#if defined (VI_MODE)
_rl_set_insert_mode (RL_IM_INSERT, 1); /* vi mode ignores insert mode */
rl_editing_mode = vi_mode;
- rl_vi_insertion_mode (1, key);
+ rl_vi_insert_mode (1, key);
#endif /* VI_MODE */
return 0;
diff --git a/lib/readline/readline.c b/lib/readline/readline.c
index bd4d263..4b3d91b 100644
--- a/lib/readline/readline.c
+++ b/lib/readline/readline.c
@@ -370,7 +370,7 @@ readline_internal_setup ()
#if defined (VI_MODE)
if (rl_editing_mode == vi_mode)
- rl_vi_insertion_mode (1, 'i');
+ rl_vi_insert_mode (1, 'i');
#endif /* VI_MODE */
if (rl_pre_input_hook)
diff --git a/lib/readline/readline.h b/lib/readline/readline.h
index b71bf98..8527ebf 100644
--- a/lib/readline/readline.h
+++ b/lib/readline/readline.h
@@ -230,6 +230,7 @@ extern int rl_vi_next_word PARAMS((int, int));
extern int rl_vi_end_word PARAMS((int, int));
extern int rl_vi_insert_beg PARAMS((int, int));
extern int rl_vi_append_mode PARAMS((int, int));
+extern int rl_vi_insert_mode PARAMS((int, int));
extern int rl_vi_append_eol PARAMS((int, int));
extern int rl_vi_eof_maybe PARAMS((int, int));
extern int rl_vi_insertion_mode PARAMS((int, int));
diff --git a/lib/readline/vi_keymap.c b/lib/readline/vi_keymap.c
index 4b48c75..3a017cc 100644
--- a/lib/readline/vi_keymap.c
+++ b/lib/readline/vi_keymap.c
@@ -151,7 +151,7 @@ KEYMAP_ENTRY_ARRAY vi_movement_keymap = {
{ ISFUNC, rl_vi_char_search }, /* f */
{ ISFUNC, (rl_command_func_t *)0x0 }, /* g */
{ ISFUNC, rl_backward_char }, /* h */
- { ISFUNC, rl_vi_insertion_mode }, /* i */
+ { ISFUNC, rl_vi_insert_mode }, /* i */
{ ISFUNC, rl_get_next_history }, /* j */
{ ISFUNC, rl_get_previous_history }, /* k */
{ ISFUNC, rl_forward_char }, /* l */
diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c
index b0da0ab..e859062 100644
--- a/lib/readline/vi_mode.c
+++ b/lib/readline/vi_mode.c
@@ -220,6 +220,15 @@ rl_vi_redo (count, c)
if (rl_point > 0)
_rl_vi_backup ();
}
+ /* Ditto for redoing an insert with `I', but move to the beginning of line
+ like the `I' command does. */
+ else if (_rl_vi_last_command == 'I' && vi_insert_buffer && *vi_insert_buffer)
+ {
+ rl_beg_of_line (1, 'I');
+ _rl_vi_stuff_insert (count);
+ if (rl_point > 0)
+ _rl_vi_backup ();
+ }
else
r = _rl_dispatch (_rl_vi_last_command, _rl_keymap);
vi_redoing = 0;
@@ -584,7 +593,7 @@ rl_vi_insert_beg (count, key)
int count, key;
{
rl_beg_of_line (1, key);
- rl_vi_insertion_mode (1, key);
+ rl_vi_insert_mode (1, key);
return (0);
}
@@ -618,6 +627,14 @@ rl_vi_append_mode (count, key)
}
int
+rl_vi_insert_mode (count, key)
+ int count, key;
+{
+ rl_vi_start_inserting (key, 1, rl_arg_sign);
+ return (0);
+}
+
+int
rl_vi_append_eol (count, key)
int count, key;
{
@@ -690,7 +707,7 @@ _rl_vi_done_inserting ()
}
else
{
- if ((_rl_vi_last_key_before_insert == 'i' || _rl_vi_last_key_before_insert == 'a') && rl_undo_list)
+ if ((_rl_vi_last_key_before_insert == 'i' || _rl_vi_last_key_before_insert == 'a' || _rl_vi_last_key_before_insert == 'I') && rl_undo_list)
_rl_vi_save_insert (rl_undo_list);
/* XXX - Other keys probably need to be checked. */
else if (_rl_vi_last_key_before_insert == 'C')
--
1.5.3.7
--
Tomas Janousek, SW Engineer, Red Hat, Inc.

View File

@ -1,23 +0,0 @@
286861: Wrong input confuses bash's arithmetic unit permanently
If evalerror (thus longjmp) is called while noeval != 0, it stays nonzero and
assignments cease to work. Such expressions are for example:
let tmp="foo.a"+0 (only in bash 3.2)
let x=(0?(3?4):3)
I think we should reset noeval to zero in the evalexp function (or restore
expr_stack[0], probably).
Written-by: Tomas Janousek <tjanouse@redhat.com>
--- bash-3.2/expr.c.286861 2007-10-23 14:48:38.000000000 +0200
+++ bash-3.2/expr.c 2007-11-06 18:48:24.000000000 +0100
@@ -337,6 +337,7 @@
return (0);
}
+ noeval = 0;
val = subexpr (expr);
if (validp)

View File

@ -1,7 +1,7 @@
Version: 3.2
Name: bash
Summary: The GNU Bourne Again shell (bash) version %{version}
Release: 19%{?dist}
Release: 20%{?dist}
Group: System Environment/Shells
License: GPLv2+
Url: http://www.gnu.org/software/bash
@ -36,6 +36,14 @@ Patch22: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-022
Patch23: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-023
Patch24: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-024
Patch25: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-025
Patch26: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-026
Patch27: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-027
Patch28: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-028
Patch29: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-029
Patch30: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-030
Patch31: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-031
Patch32: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-032
Patch33: ftp://ftp.gnu.org/gnu/bash/bash-3.2-patches/bash32-033
# Other patches
Patch100: bash-2.03-paths.patch
Patch101: bash-2.02-security.patch
@ -53,9 +61,8 @@ Patch130: bash-infotags.patch
Patch131: bash-cond-rmatch.patch
Patch132: bash-ulimit-m.patch
Patch133: bash-3.2-rng.patch
Patch134: readline-5.2-inv.patch
Patch135: bash-3.2-286861.patch
Patch136: bash-3.2-344411.patch
Patch137: bash-3.2-190350.patch
Requires: mktemp
Requires(post): ncurses
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -100,6 +107,14 @@ compliance over previous versions.
%patch23 -p0 -b .023
%patch24 -p0 -b .024
%patch25 -p0 -b .025
%patch26 -p0 -b .026
%patch27 -p0 -b .027
%patch28 -p0 -b .028
%patch29 -p0 -b .029
%patch30 -p0 -b .030
%patch31 -p0 -b .031
%patch32 -p0 -b .032
%patch33 -p0 -b .033
# Other patches
%patch100 -p1 -b .paths
@ -118,9 +133,8 @@ compliance over previous versions.
%patch131 -p1 -b .cond-rmatch
%patch132 -p1 -b .ulimit-m
%patch133 -p1 -b .rng.patch
%patch134 -p1 -b .readline-inv
%patch135 -p1 -b .286861
%patch136 -p1 -b .344411
%patch137 -p1 -b .190350
echo %{version} > _distribution
echo %{release} > _patchlevel
@ -262,6 +276,17 @@ fi
%doc doc/*.ps doc/*.0 doc/*.html doc/article.txt
%changelog
* Mon Jan 14 2008 Tomas Janousek <tjanouse@redhat.com> - 3.2-20
- Added bash32-026 upstream official patch
- Added bash32-027 upstream official patch (#249987)
- Added bash32-028 upstream official patch
- Added bash32-029 upstream official patch (#286861)
- Added bash32-030 upstream official patch
- Added bash32-031 upstream official patch (#358231)
- Added bash32-032 upstream official patch
- Added bash32-033 upstream official patch
- Fix insert command repeating in vi mode (#190350)
* Tue Nov 06 2007 Tomas Janousek <tjanouse@redhat.com> - 3.2-19
- fix cursor position when prompt has one invisible character (#358231)
- dropped examples/loadables/ from docs, since it wasn't possible to build them

82
bash32-026 Normal file
View File

@ -0,0 +1,82 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-026
Bug-Reported-by: Chet Ramey <chet.ramey@case.edu>
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
This keeps the Apple linker from attempting to link bash against Apple's
readline library "replacement" rather than the one shipped with bash. It
extends the configure workaround to Mac OS X Leopard (10.5).
As a side effect, the patch updates the copyright date displayed in the
version string.
You must re-run configure after applying the patch, and before rebuilding
bash.
Patch:
*** ../bash-3.2-patched/configure.in 2007-03-06 11:07:38.000000000 -0500
--- configure.in 2007-11-23 15:37:41.000000000 -0500
***************
*** 519,523 ****
# dynamic version
case "${host_os}" in
! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
--- 519,523 ----
# dynamic version
case "${host_os}" in
! darwin[[89]]*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
*** ../bash-3.2-patched/configure 2007-03-24 14:51:22.000000000 -0400
--- configure 2007-11-23 15:46:15.000000000 -0500
***************
*** 4872,4876 ****
# dynamic version
case "${host_os}" in
! darwin8*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
--- 4872,4876 ----
# dynamic version
case "${host_os}" in
! darwin[89]*) READLINE_LIB='${READLINE_LIBRARY}' ;;
*) READLINE_LIB=-lreadline ;;
esac
*** ../bash-3.2-patched/version.c 2005-05-16 11:58:34.000000000 -0400
--- version.c 2007-11-23 16:03:40.000000000 -0500
***************
*** 80,83 ****
printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
if (extended)
! printf (_("Copyright (C) 2005 Free Software Foundation, Inc.\n"));
}
--- 80,83 ----
printf ("GNU bash, version %s (%s)\n", shell_version_string (), MACHTYPE);
if (extended)
! printf (_("Copyright (C) 2007 Free Software Foundation, Inc.\n"));
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 25
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 26
#endif /* _PATCHLEVEL_H_ */

85
bash32-027 Normal file
View File

@ -0,0 +1,85 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-027
Bug-Reported-by: dAniel hAhler <ubuntu@thequod.de>
Bug-Reference-ID: <4702ED8A.5000503@thequod.de>
Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/119938
Bug-Description:
When updating the display after displaying, for instance, a list of possible
completions, readline will place the cursor at the wrong position if the
prompt contains invisible characters and a newline.
Patch:
*** ../bash-3.2.25/lib/readline/display.c Mon Aug 6 14:26:29 2007
--- lib/readline/display.c Wed Oct 10 22:43:58 2007
***************
*** 1049,1053 ****
else
tx = nleft;
! if (_rl_last_c_pos > tx)
{
_rl_backspace (_rl_last_c_pos - tx); /* XXX */
--- 1049,1053 ----
else
tx = nleft;
! if (tx >= 0 && _rl_last_c_pos > tx)
{
_rl_backspace (_rl_last_c_pos - tx); /* XXX */
***************
*** 1205,1209 ****
{
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
! int temp, lendiff, wsatend, od, nd;
int current_invis_chars;
int col_lendiff, col_temp;
--- 1205,1209 ----
{
register char *ofd, *ols, *oe, *nfd, *nls, *ne;
! int temp, lendiff, wsatend, od, nd, o_cpos;
int current_invis_chars;
int col_lendiff, col_temp;
***************
*** 1466,1469 ****
--- 1466,1471 ----
}
+ o_cpos = _rl_last_c_pos;
+
/* When this function returns, _rl_last_c_pos is correct, and an absolute
cursor postion in multibyte mode, but a buffer index when not in a
***************
*** 1475,1479 ****
invisible characters in the prompt string. Let's see if setting this when
we make sure we're at the end of the drawn prompt string works. */
! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 && _rl_last_c_pos == prompt_physical_chars)
cpos_adjusted = 1;
#endif
--- 1477,1483 ----
invisible characters in the prompt string. Let's see if setting this when
we make sure we're at the end of the drawn prompt string works. */
! if (current_line == 0 && MB_CUR_MAX > 1 && rl_byte_oriented == 0 &&
! (_rl_last_c_pos > 0 || o_cpos > 0) &&
! _rl_last_c_pos == prompt_physical_chars)
cpos_adjusted = 1;
#endif
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 26
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 27
#endif /* _PATCHLEVEL_H_ */

60
bash32-028 Normal file
View File

@ -0,0 +1,60 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-028
Bug-Reported-by: dAniel hAhler <ubuntu@thequod.de>
Bug-Reference-ID:
Bug-Reference-URL:
Bug-Description:
Under some circumstances, readline will incorrectly display a prompt string
containing invisible characters after the final newline.
Patch:
*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500
***************
*** 392,396 ****
local_prompt = expand_prompt (p, &prompt_visible_length,
&prompt_last_invisible,
! (int *)NULL,
&prompt_physical_chars);
c = *t; *t = '\0';
--- 420,424 ----
local_prompt = expand_prompt (p, &prompt_visible_length,
&prompt_last_invisible,
! &prompt_invis_chars_first_line,
&prompt_physical_chars);
c = *t; *t = '\0';
***************
*** 399,403 ****
local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
(int *)NULL,
! &prompt_invis_chars_first_line,
(int *)NULL);
*t = c;
--- 427,431 ----
local_prompt_prefix = expand_prompt (prompt, &prompt_prefix_length,
(int *)NULL,
! (int *)NULL,
(int *)NULL);
*t = c;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 27
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 28
#endif /* _PATCHLEVEL_H_ */

52
bash32-029 Normal file
View File

@ -0,0 +1,52 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-029
Bug-Reported-by: Tomas Janousek <tjanouse@redhat.com>
Bug-Reference-ID: <20071102104034.GA26893@redhat.com>
Bug-Reference-URL: https://bugzilla.redhat.com/show_bug.cgi?id=286861
Bug-Description:
When the bash arithmetic expression evaluator has temporarily turned off
evalation, such as when parsing a pre- or post-decrement or -increment
operator, and an error occurs, evaluation is not re-enabled.
Patch:
*** ../bash-3.2-patched/expr.c 2007-08-25 13:47:05.000000000 -0400
--- expr.c 2007-10-18 08:08:44.000000000 -0400
***************
*** 287,290 ****
--- 287,292 ----
}
free (expr_stack[expr_depth]); /* free the allocated EXPR_CONTEXT */
+
+ noeval = 0; /* XXX */
}
***************
*** 320,323 ****
--- 322,326 ----
val = 0;
+ noeval = 0;
FASTCOPY (evalbuf, oevalbuf, sizeof (evalbuf));
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 28
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 29
#endif /* _PATCHLEVEL_H_ */

50
bash32-030 Normal file
View File

@ -0,0 +1,50 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-030
Bug-Reported-by: Paul Eggert <eggert@cs.ucla.edu> Andreas Schwab <schwab@suse.de>
Bug-Reference-ID: <877il0nu84.fsf_-_@penguin.cs.ucla.edu> <m28x5gparz.fsf@igel.home>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00023.html http://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.htmlhttp://lists.gnu.org/archive/html/bug-bash/2007-11/msg00022.html
Bug-Description:
If redirections attached to a compound command fail, bash does not set the
command's exit status correctly. This only happens when the command is the
first in a sequential list.
Patch:
*** ../bash-3.2-patched/execute_cmd.c 2007-03-24 14:51:05.000000000 -0400
--- execute_cmd.c 2007-11-05 22:31:14.000000000 -0500
***************
*** 615,619 ****
redirection_undo_list = (REDIRECT *)NULL;
dispose_exec_redirects ();
! return (EXECUTION_FAILURE);
}
--- 620,624 ----
redirection_undo_list = (REDIRECT *)NULL;
dispose_exec_redirects ();
! return (last_command_exit_value = EXECUTION_FAILURE);
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 29
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 30
#endif /* _PATCHLEVEL_H_ */

62
bash32-031 Normal file
View File

@ -0,0 +1,62 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-031
Bug-Reported-by: Miroslav Lichvar <mlichvar@redhat.com>
Bug-Reference-ID: Fri, 02 Nov 2007 14:07:45 +0100
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2007-11/msg00000.html
Bug-Description:
In certain cases when outputting characters at the end of the line,
e.g., when displaying the prompt string, readline positions the cursor
incorrectly if the prompt string contains invisible characters and the
text being drawn begins before the last invisible character in the line.
Patch:
*** ../bash-3.2-patched/lib/readline/display.c 2007-08-25 13:47:08.000000000 -0400
--- lib/readline/display.c 2007-11-10 17:51:29.000000000 -0500
***************
*** 1566,1574 ****
else
{
- /* We have horizontal scrolling and we are not inserting at
- the end. We have invisible characters in this line. This
- is a dumb update. */
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
return;
}
--- 1619,1632 ----
else
{
_rl_output_some_chars (nfd, temp);
_rl_last_c_pos += col_temp;
+ /* If nfd begins before any invisible characters in the prompt,
+ adjust _rl_last_c_pos to account for wrap_offset and set
+ cpos_adjusted to let the caller know. */
+ if (current_line == 0 && wrap_offset && ((nfd - new) <= prompt_last_invisible))
+ {
+ _rl_last_c_pos -= wrap_offset;
+ cpos_adjusted = 1;
+ }
return;
}
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 30
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 31
#endif /* _PATCHLEVEL_H_ */

47
bash32-032 Normal file
View File

@ -0,0 +1,47 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-032
Bug-Reported-by: Uwe Doering <gemini@geminix.org>
Bug-Reference-ID: <46F3DD72.2090801@geminix.org>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-09/msg00102.html
Bug-Description:
There is an off-by-one error in the code that buffers characters received
very quickly in succession, causing characters to be dropped.
Patch:
*** ../bash-3.2-patched/lib/readline/input.c 2007-08-25 13:47:10.000000000 -0400
--- lib/readline/input.c 2007-10-12 22:55:25.000000000 -0400
***************
*** 155,159 ****
pop_index--;
if (pop_index < 0)
! pop_index = ibuffer_len - 1;
ibuffer[pop_index] = key;
return (1);
--- 155,159 ----
pop_index--;
if (pop_index < 0)
! pop_index = ibuffer_len;
ibuffer[pop_index] = key;
return (1);
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 31
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 32
#endif /* _PATCHLEVEL_H_ */

88
bash32-033 Normal file
View File

@ -0,0 +1,88 @@
BASH PATCH REPORT
=================
Bash-Release: 3.2
Patch-ID: bash32-033
Bug-Reported-by: Christophe Martin <schplurtz@free.fr>
Bug-Reference-ID: <465ABA4A.3030805@free.fr>
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2007-05/msg00104.html
Bug-Description:
References made within a function to an uninitialized local array variable
using the [*] subscript in a double-quoted string can result in spurious
ASCII 127 characters in the expanded value.
Patch:
*** ../bash-3.2-patched/arrayfunc.c 2007-08-25 13:47:05.000000000 -0400
--- arrayfunc.c 2007-05-31 11:55:46.000000000 -0400
***************
*** 723,727 ****
{
if (rtype)
! *rtype = 1;
if (allow_all == 0)
{
--- 723,727 ----
{
if (rtype)
! *rtype = (t[0] == '*') ? 1 : 2;
if (allow_all == 0)
{
*** ../bash-3.2-patched/subst.c 2007-08-25 13:47:08.000000000 -0400
--- subst.c 2007-11-14 15:43:00.000000000 -0500
***************
*** 4908,4915 ****
intmax_t arg_index;
SHELL_VAR *var;
! int atype;
ret = 0;
temp = 0;
/* Handle multiple digit arguments, as in ${11}. */
--- 4973,4981 ----
intmax_t arg_index;
SHELL_VAR *var;
! int atype, rflags;
ret = 0;
temp = 0;
+ rflags = 0;
/* Handle multiple digit arguments, as in ${11}. */
***************
*** 4944,4947 ****
--- 5010,5015 ----
? quote_string (temp)
: quote_escapes (temp);
+ else if (atype == 1 && temp && QUOTED_NULL (temp) && (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)))
+ rflags |= W_HASQUOTEDNULL;
}
#endif
***************
*** 4971,4974 ****
--- 5039,5043 ----
ret = alloc_word_desc ();
ret->word = temp;
+ ret->flags |= rflags;
}
return ret;
*** ../bash-3.2/patchlevel.h Thu Apr 13 08:31:04 2006
--- patchlevel.h Mon Oct 16 14:22:54 2006
***************
*** 26,30 ****
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 32
#endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
looks for to find the patch level (for the sccs version string). */
! #define PATCHLEVEL 33
#endif /* _PATCHLEVEL_H_ */

View File

@ -1,15 +0,0 @@
fix cursor position when prompt has one invisible character (#358231)
Written-by: Miroslav Lichvar <mlichvar@redhat.com>
--- bash-3.2/lib/readline/display.c.inv 2007-10-31 17:14:31.000000000 +0100
+++ bash-3.2/lib/readline/display.c 2007-10-31 17:15:00.000000000 +0100
@@ -943,7 +943,7 @@ rl_redisplay ()
cpos_adjusted == 0 &&
_rl_last_c_pos != o_cpos &&
_rl_last_c_pos > wrap_offset &&
- o_cpos < prompt_last_invisible)
+ o_cpos <= prompt_last_invisible)
_rl_last_c_pos -= wrap_offset;
/* If this is the line with the prompt, we might need to