mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-30 08:59:56 +02:00
commit bash-20170519 snapshot
This commit is contained in:
+43
-1
@@ -1,4 +1,4 @@
|
||||
2/14/2011
|
||||
' 2/14/2011
|
||||
---------
|
||||
[bash-4.2 released]
|
||||
|
||||
@@ -13905,3 +13905,45 @@ lib/readline/display.c
|
||||
- expand_prompt: use `ret' as first parameter to _rl_find_prev_mbchar
|
||||
since that needs the base of the array. Bug from fuzzing reported by
|
||||
Eduardo Bustamante <dualbus@gmail.com>
|
||||
|
||||
5/15
|
||||
----
|
||||
execute_cmd.c
|
||||
- execute_simple_command, execute_arith_command, execute_cond_command,
|
||||
execute_arith_for_command: adjust the line number when executing a
|
||||
function interactively so that the first command in the function is
|
||||
line 1, not line 0, as Posix requires. Reported by Robert Elz
|
||||
<kre@bmunnari.OZ.AU>
|
||||
- execute_simple_command, execute_arith_command, execute_cond_command,
|
||||
execute_arith_for_command: ony adjust the line number when executing
|
||||
a function interactively if we are not sourcing a file
|
||||
(sourcelevel == 0), so this is consistent everywhere we adjust the
|
||||
line number
|
||||
|
||||
5/16
|
||||
----
|
||||
bashline.c
|
||||
- bash_directory_completion_hook: when calling split_at_delims to see
|
||||
whether a ${ or $( is closed, use the right value for `start' relative
|
||||
to the substring beginning at `$'. Bug from fuzzing reported by
|
||||
Eduardo Bustamante <dualbus@gmail.com>
|
||||
|
||||
expr.c
|
||||
- expassign: if the call to expcond generates a syntax error in a
|
||||
context when the shell won't longjmp (like when evaluating $PS1),
|
||||
it will end up NULL and we need to catch it before calling strlen.
|
||||
Bug from fuzzing reported by Eduardo Bustamante <dualbus@gmail.com>
|
||||
|
||||
examples/bash-completion/
|
||||
- new place to include a current or recent version of the
|
||||
bash-completion package
|
||||
|
||||
5/19
|
||||
----
|
||||
lib/readline/display.c
|
||||
- CHECK_INV_LBREAKS: new versions for multibyte and single-byte chars,
|
||||
so the multibyte version can check and increase the size of
|
||||
line_state_invisible->wbsize and line_state_invisible->wrapped_line,
|
||||
callers who call CHECK_INV_LBREAKS must update
|
||||
wrapped_line[newlines] when in HANDLE_MULTIBYTE mode. Fuzzing bug
|
||||
reported by Eduardo Bustamante <dualbus@gmail.com>
|
||||
|
||||
@@ -11,6 +11,7 @@ cross-build d
|
||||
doc d
|
||||
examples d
|
||||
#examples/obashdb d
|
||||
examples/bash-completion d
|
||||
examples/complete d
|
||||
examples/functions d
|
||||
examples/scripts d
|
||||
@@ -651,8 +652,9 @@ examples/INDEX.html f
|
||||
#examples/obashdb/README f
|
||||
#examples/obashdb/bashdb f
|
||||
#examples/obashdb/bashdb.el f
|
||||
examples/bash-completion/README f
|
||||
examples/bash-completion/bash-completion-2.5.tar.xz f
|
||||
examples/complete/bash_completion f
|
||||
examples/complete/bash-completion-2.5.tar.xz f
|
||||
examples/complete/cdfunc f
|
||||
examples/complete/complete-examples f
|
||||
#examples/complete/complete.ianmac f
|
||||
|
||||
@@ -88,6 +88,18 @@ to bash-maintainers@gnu.org.
|
||||
While the Bash maintainers do not promise to fix all bugs, we would
|
||||
like this shell to be the best that we can make it.
|
||||
|
||||
Other Packages
|
||||
==============
|
||||
|
||||
This distribution includes, in examples/bash-completion, a recent version
|
||||
of the `bash-completion' package, which provides programmable completions
|
||||
for a number of commands. It's available as a package in many distributions,
|
||||
and that is the first place from which to obtain it. If it's not a package
|
||||
from your vendor, you may install the included version.
|
||||
|
||||
The latest version of bash-completion is always available from
|
||||
https://github.com/scop/bash-completion.
|
||||
|
||||
Enjoy!
|
||||
|
||||
Chet Ramey
|
||||
|
||||
+1
-1
@@ -3247,7 +3247,7 @@ bash_directory_completion_hook (dirname)
|
||||
char delims[2];
|
||||
|
||||
delims[0] = closer; delims[1] = 0;
|
||||
p = skip_to_delim (t, t - local_dirname + 1, delims, SD_NOJMP|SD_COMPLETE);
|
||||
p = skip_to_delim (t, 1, delims, SD_NOJMP|SD_COMPLETE);
|
||||
if (t[p] != closer)
|
||||
should_expand_dirname = 0;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
Master source: https://github.com/scop/bash-completion
|
||||
|
||||
This is the latest version of the bash-completion package, which provides
|
||||
programmable completion specifications for a large number of commands.
|
||||
|
||||
If you are a vendor installing bash or preparing a package containing bash,
|
||||
please install the latest version of bash-completion when installing bash.
|
||||
Binary file not shown.
+19
-15
@@ -2974,11 +2974,12 @@ execute_arith_for_command (arith_for_command)
|
||||
line_number before executing each expression -- for $LINENO
|
||||
and the DEBUG trap. */
|
||||
line_number = arith_lineno = arith_for_command->line;
|
||||
if (variable_context && interactive_shell)
|
||||
if (variable_context && interactive_shell && sourcelevel == 0)
|
||||
{
|
||||
line_number -= function_line_number;
|
||||
if (line_number < 0)
|
||||
line_number = 0;
|
||||
/* line numbers in a function start at 1 */
|
||||
line_number -= function_line_number - 1;
|
||||
if (line_number <= 0)
|
||||
line_number = 1;
|
||||
}
|
||||
|
||||
/* Evaluate the initialization expression. */
|
||||
@@ -3632,11 +3633,12 @@ execute_arith_command (arith_command)
|
||||
this_command_name = "(("; /* )) */
|
||||
line_number_for_err_trap = line_number = arith_command->line;
|
||||
/* If we're in a function, update the line number information. */
|
||||
if (variable_context && interactive_shell)
|
||||
if (variable_context && interactive_shell && sourcelevel == 0)
|
||||
{
|
||||
line_number -= function_line_number;
|
||||
if (line_number < 0)
|
||||
line_number = 0;
|
||||
/* line numbers in a function start at 1 */
|
||||
line_number -= function_line_number - 1;
|
||||
if (line_number <= 0)
|
||||
line_number = 1;
|
||||
}
|
||||
|
||||
command_string_index = 0;
|
||||
@@ -3833,11 +3835,12 @@ execute_cond_command (cond_command)
|
||||
this_command_name = "[[";
|
||||
line_number_for_err_trap = line_number = cond_command->line;
|
||||
/* If we're in a function, update the line number information. */
|
||||
if (variable_context && interactive_shell)
|
||||
if (variable_context && interactive_shell && sourcelevel == 0)
|
||||
{
|
||||
line_number -= function_line_number;
|
||||
if (line_number < 0)
|
||||
line_number = 0;
|
||||
/* line numbers in a function start at 1 */
|
||||
line_number -= function_line_number - 1;
|
||||
if (line_number <= 0)
|
||||
line_number = 1;
|
||||
}
|
||||
command_string_index = 0;
|
||||
print_cond_command (cond_command);
|
||||
@@ -4087,9 +4090,10 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
|
||||
/* If we're in a function, update the line number information. */
|
||||
if (variable_context && interactive_shell && sourcelevel == 0)
|
||||
{
|
||||
line_number -= function_line_number;
|
||||
if (line_number < 0)
|
||||
line_number = 0;
|
||||
/* line numbers in a function start at 1 */
|
||||
line_number -= function_line_number - 1;
|
||||
if (line_number <= 0)
|
||||
line_number = 1;
|
||||
}
|
||||
|
||||
/* Remember what this command line looks like at invocation. */
|
||||
|
||||
@@ -501,6 +501,9 @@ expassign ()
|
||||
lvalue = value;
|
||||
}
|
||||
|
||||
if (tokstr == 0)
|
||||
evalerror (_("syntax error in variable assignment"));
|
||||
|
||||
/* XXX - watch out for pointer aliasing issues here */
|
||||
lhs = savestring (tokstr);
|
||||
/* save ind in case rhs is string var and evaluation overwrites it */
|
||||
|
||||
+30
-1
@@ -764,6 +764,21 @@ rl_redisplay (void)
|
||||
wrap_offset = prompt_invis_chars_first_line = 0;
|
||||
}
|
||||
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
#define CHECK_INV_LBREAKS() \
|
||||
do { \
|
||||
if (newlines >= (inv_lbsize - 2)) \
|
||||
{ \
|
||||
inv_lbsize *= 2; \
|
||||
inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
|
||||
} \
|
||||
if (newlines >= (line_state_invisible->wbsize - 2)) \
|
||||
{ \
|
||||
line_state_invisible->wbsize *= 2; \
|
||||
line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \
|
||||
} \
|
||||
} while (0)
|
||||
#else
|
||||
#define CHECK_INV_LBREAKS() \
|
||||
do { \
|
||||
if (newlines >= (inv_lbsize - 2)) \
|
||||
@@ -772,6 +787,7 @@ rl_redisplay (void)
|
||||
inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
|
||||
} \
|
||||
} while (0)
|
||||
#endif /* !HANDLE_MULTIBYTE */
|
||||
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
#define CHECK_LPOS() \
|
||||
@@ -785,7 +801,7 @@ rl_redisplay (void)
|
||||
inv_lbreaks = (int *)xrealloc (inv_lbreaks, inv_lbsize * sizeof (int)); \
|
||||
} \
|
||||
inv_lbreaks[++newlines] = out; \
|
||||
if (newlines >= (line_state_invisible->wbsize - 1)) \
|
||||
if (newlines >= (line_state_invisible->wbsize - 2)) \
|
||||
{ \
|
||||
line_state_invisible->wbsize *= 2; \
|
||||
line_state_invisible->wrapped_line = (int *)xrealloc (line_state_invisible->wrapped_line, line_state_invisible->wbsize * sizeof(int)); \
|
||||
@@ -935,6 +951,9 @@ rl_redisplay (void)
|
||||
temp = _rl_screenwidth - lpos;
|
||||
CHECK_INV_LBREAKS ();
|
||||
inv_lbreaks[++newlines] = out + temp;
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
|
||||
#endif
|
||||
lpos = 4 - temp;
|
||||
}
|
||||
else
|
||||
@@ -965,6 +984,9 @@ rl_redisplay (void)
|
||||
temp2 = _rl_screenwidth - lpos;
|
||||
CHECK_INV_LBREAKS ();
|
||||
inv_lbreaks[++newlines] = out + temp2;
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
|
||||
#endif
|
||||
lpos = temp - temp2;
|
||||
while (out < newout)
|
||||
line[out++] = ' ';
|
||||
@@ -982,6 +1004,9 @@ rl_redisplay (void)
|
||||
line[out++] = '\0'; /* XXX - sentinel */
|
||||
CHECK_INV_LBREAKS ();
|
||||
inv_lbreaks[++newlines] = out;
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
|
||||
#endif
|
||||
lpos = 0;
|
||||
}
|
||||
else if (CTRL_CHAR (c) || c == RUBOUT)
|
||||
@@ -1056,6 +1081,10 @@ rl_redisplay (void)
|
||||
inv_botlin = lb_botlin = _rl_inv_botlin = newlines;
|
||||
CHECK_INV_LBREAKS ();
|
||||
inv_lbreaks[newlines+1] = out;
|
||||
#if defined (HANDLE_MULTIBYTE)
|
||||
/* This should be 0 anyway */
|
||||
line_state_invisible->wrapped_line[newlines+1] = _rl_wrapped_multicolumn;
|
||||
#endif
|
||||
cursor_linenum = lb_linenum;
|
||||
|
||||
/* CPOS_BUFFER_POSITION == position in buffer where cursor should be placed.
|
||||
|
||||
Reference in New Issue
Block a user