vanhofen
5 years ago
6 changed files with 614 additions and 0 deletions
@ -0,0 +1,64 @@ |
|||||
|
BASH PATCH REPORT |
||||
|
================= |
||||
|
|
||||
|
Bash-Release: 5.0 |
||||
|
Patch-ID: bash50-012 |
||||
|
|
||||
|
Bug-Reported-by: lessbug@qq.com |
||||
|
Bug-Reference-ID: <tencent_6AA531D9A5CC4121D86BD5CDA2E0DA98C605@qq.com> |
||||
|
Bug-Reference-URL: |
||||
|
|
||||
|
Bug-Description: |
||||
|
|
||||
|
When using previous-history to go back beyond the beginning of the history list, |
||||
|
it's possible to move to an incorrect partial line. |
||||
|
|
||||
|
Patch (apply with `patch -p0'): |
||||
|
|
||||
|
*** ../bash-5.0-patched/lib/readline/misc.c 2017-07-07 17:30:12.000000000 -0400 |
||||
|
--- lib/readline/misc.c 2019-05-16 11:43:46.000000000 -0400 |
||||
|
*************** |
||||
|
*** 577,580 **** |
||||
|
--- 590,594 ---- |
||||
|
{ |
||||
|
HIST_ENTRY *old_temp, *temp; |
||||
|
+ int had_saved_line; |
||||
|
|
||||
|
if (count < 0) |
||||
|
*************** |
||||
|
*** 589,592 **** |
||||
|
--- 603,607 ---- |
||||
|
|
||||
|
/* If we don't have a line saved, then save this one. */ |
||||
|
+ had_saved_line = _rl_saved_line_for_history != 0; |
||||
|
rl_maybe_save_line (); |
||||
|
|
||||
|
*************** |
||||
|
*** 612,616 **** |
||||
|
if (temp == 0) |
||||
|
{ |
||||
|
! rl_maybe_unsave_line (); |
||||
|
rl_ding (); |
||||
|
} |
||||
|
--- 627,632 ---- |
||||
|
if (temp == 0) |
||||
|
{ |
||||
|
! if (had_saved_line == 0) |
||||
|
! _rl_free_saved_history_line (); |
||||
|
rl_ding (); |
||||
|
} |
||||
|
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
||||
|
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
||||
|
*************** |
||||
|
*** 26,30 **** |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 11 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
||||
|
--- 26,30 ---- |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 12 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,73 @@ |
|||||
|
BASH PATCH REPORT |
||||
|
================= |
||||
|
|
||||
|
Bash-Release: 5.0 |
||||
|
Patch-ID: bash50-013 |
||||
|
|
||||
|
Bug-Reported-by: HIROSE Masaaki <hirose31@gmail.com> |
||||
|
Bug-Reference-ID: <CAGSOfA-RqiTe=+GsXsDKyZrrMWH4bDbXgMVVegMa6OjqC5xbnQ@mail.gmail.com> |
||||
|
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-05/msg00038.html |
||||
|
|
||||
|
Bug-Description: |
||||
|
|
||||
|
Reading history entries with timestamps can result in history entries joined |
||||
|
by linefeeds. |
||||
|
|
||||
|
Patch (apply with `patch -p0'): |
||||
|
|
||||
|
*** ../bash-5.0-patched/lib/readline/histfile.c 2018-06-11 09:14:52.000000000 -0400 |
||||
|
--- lib/readline/histfile.c 2019-05-16 15:55:57.000000000 -0400 |
||||
|
*************** |
||||
|
*** 370,376 **** |
||||
|
|
||||
|
has_timestamps = HIST_TIMESTAMP_START (buffer); |
||||
|
! history_multiline_entries += has_timestamps && history_write_timestamps; |
||||
|
|
||||
|
/* Skip lines until we are at FROM. */ |
||||
|
for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) |
||||
|
if (*line_end == '\n') |
||||
|
--- 370,378 ---- |
||||
|
|
||||
|
has_timestamps = HIST_TIMESTAMP_START (buffer); |
||||
|
! history_multiline_entries += has_timestamps && history_write_timestamps; |
||||
|
|
||||
|
/* Skip lines until we are at FROM. */ |
||||
|
+ if (has_timestamps) |
||||
|
+ last_ts = buffer; |
||||
|
for (line_start = line_end = buffer; line_end < bufend && current_line < from; line_end++) |
||||
|
if (*line_end == '\n') |
||||
|
*************** |
||||
|
*** 381,385 **** |
||||
|
--- 383,398 ---- |
||||
|
if (HIST_TIMESTAMP_START(p) == 0) |
||||
|
current_line++; |
||||
|
+ else |
||||
|
+ last_ts = p; |
||||
|
line_start = p; |
||||
|
+ /* If we are at the last line (current_line == from) but we have |
||||
|
+ timestamps (has_timestamps), then line_start points to the |
||||
|
+ text of the last command, and we need to skip to its end. */ |
||||
|
+ if (current_line >= from && has_timestamps) |
||||
|
+ { |
||||
|
+ for (line_end = p; line_end < bufend && *line_end != '\n'; line_end++) |
||||
|
+ ; |
||||
|
+ line_start = (*line_end == '\n') ? line_end + 1 : line_end; |
||||
|
+ } |
||||
|
} |
||||
|
|
||||
|
|
||||
|
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
||||
|
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
||||
|
*************** |
||||
|
*** 26,30 **** |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 12 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
||||
|
--- 26,30 ---- |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 13 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,52 @@ |
|||||
|
BASH PATCH REPORT |
||||
|
================= |
||||
|
|
||||
|
Bash-Release: 5.0 |
||||
|
Patch-ID: bash50-014 |
||||
|
|
||||
|
Bug-Reported-by: Johannes Hielscher <jhielscher@posteo.de> |
||||
|
Bug-Reference-ID: <20190208205048.77c25a83@hordevm> |
||||
|
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-02/msg00032.html |
||||
|
|
||||
|
Bug-Description: |
||||
|
|
||||
|
If the current line is empty, using the emacs C-xC-e binding to enter the |
||||
|
editor will edit the previous command instead of the current (empty) one. |
||||
|
|
||||
|
Patch (apply with `patch -p0'): |
||||
|
|
||||
|
*** ../bash-5.0-patched/bashline.c 2019-01-16 16:13:21.000000000 -0500 |
||||
|
--- bashline.c 2019-02-11 11:18:57.000000000 -0500 |
||||
|
*************** |
||||
|
*** 962,970 **** |
||||
|
finished with the command, so we should not ignore the last command */ |
||||
|
using_history (); |
||||
|
! if (rl_line_buffer[0]) |
||||
|
! { |
||||
|
! current_command_line_count++; /* for rl_newline above */ |
||||
|
! bash_add_history (rl_line_buffer); |
||||
|
! } |
||||
|
current_command_line_count = 0; /* for dummy history entry */ |
||||
|
bash_add_history (""); |
||||
|
--- 965,970 ---- |
||||
|
finished with the command, so we should not ignore the last command */ |
||||
|
using_history (); |
||||
|
! current_command_line_count++; /* for rl_newline above */ |
||||
|
! bash_add_history (rl_line_buffer); |
||||
|
current_command_line_count = 0; /* for dummy history entry */ |
||||
|
bash_add_history (""); |
||||
|
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
||||
|
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
||||
|
*************** |
||||
|
*** 26,30 **** |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 13 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
||||
|
--- 26,30 ---- |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 14 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,78 @@ |
|||||
|
BASH PATCH REPORT |
||||
|
================= |
||||
|
|
||||
|
Bash-Release: 5.0 |
||||
|
Patch-ID: bash50-015 |
||||
|
|
||||
|
Bug-Reported-by: Yu Kou <ckyoog@gmail.com> |
||||
|
Bug-Reference-ID: <CAAqoF9Ko3nAShJXGzucafs-ByUagzZ4nbQonwEkwC7s9UqfWKw@mail.gmail.com> |
||||
|
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-05/msg00032.html |
||||
|
|
||||
|
Bug-Description: |
||||
|
|
||||
|
If alias expansion is enabled when processing the command argument to the |
||||
|
`-c' option, an alias is defined in that command, and the command ends with |
||||
|
the invocation of that alias, the shell's command parser can prematurely |
||||
|
terminate before the entire command is executed. |
||||
|
|
||||
|
Patch (apply with `patch -p0'): |
||||
|
|
||||
|
*** ../bash-20190426/builtins/evalstring.c 2019-01-29 14:15:19.000000000 -0500 |
||||
|
--- builtins/evalstring.c 2019-05-15 14:19:36.000000000 -0400 |
||||
|
*************** |
||||
|
*** 92,95 **** |
||||
|
--- 92,96 ---- |
||||
|
running_trap == 0 && |
||||
|
*bash_input.location.string == '\0' && |
||||
|
+ parser_expanding_alias () == 0 && |
||||
|
command->type == cm_simple && |
||||
|
signal_is_trapped (EXIT_TRAP) == 0 && |
||||
|
*************** |
||||
|
*** 106,109 **** |
||||
|
--- 107,111 ---- |
||||
|
{ |
||||
|
return (*bash_input.location.string == '\0' && |
||||
|
+ parser_expanding_alias () == 0 && |
||||
|
(command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR || command->value.Connection->connector == ';') && |
||||
|
command->value.Connection->second->type == cm_simple); |
||||
|
*************** |
||||
|
*** 291,295 **** |
||||
|
with_input_from_string (string, from_file); |
||||
|
clear_shell_input_line (); |
||||
|
! while (*(bash_input.location.string)) |
||||
|
{ |
||||
|
command = (COMMAND *)NULL; |
||||
|
--- 293,297 ---- |
||||
|
with_input_from_string (string, from_file); |
||||
|
clear_shell_input_line (); |
||||
|
! while (*(bash_input.location.string) || parser_expanding_alias ()) |
||||
|
{ |
||||
|
command = (COMMAND *)NULL; |
||||
|
*************** |
||||
|
*** 546,550 **** |
||||
|
|
||||
|
with_input_from_string (string, from_file); |
||||
|
! while (*(bash_input.location.string)) |
||||
|
{ |
||||
|
command = (COMMAND *)NULL; |
||||
|
--- 548,552 ---- |
||||
|
|
||||
|
with_input_from_string (string, from_file); |
||||
|
! while (*(bash_input.location.string)) /* XXX - parser_expanding_alias () ? */ |
||||
|
{ |
||||
|
command = (COMMAND *)NULL; |
||||
|
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
||||
|
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
||||
|
*************** |
||||
|
*** 26,30 **** |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 14 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
||||
|
--- 26,30 ---- |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 15 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,58 @@ |
|||||
|
BASH PATCH REPORT |
||||
|
================= |
||||
|
|
||||
|
Bash-Release: 5.0 |
||||
|
Patch-ID: bash50-016 |
||||
|
|
||||
|
Bug-Reported-by: sunnycemetery@gmail.com |
||||
|
Bug-Reference-ID: <20190316041534.GB22884@midnight> |
||||
|
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2019-03/msg00070.html |
||||
|
|
||||
|
Bug-Description: |
||||
|
|
||||
|
Bash waits too long to reap /dev/fd process substitutions used as redirections |
||||
|
with loops and group commands, which can lead to file descriptor exhaustion. |
||||
|
|
||||
|
Patch (apply with `patch -p0'): |
||||
|
|
||||
|
*** ../bash-5.0-patched/execute_cmd.c 2019-04-19 15:46:36.000000000 -0400 |
||||
|
--- execute_cmd.c 2019-07-01 16:45:49.000000000 -0400 |
||||
|
*************** |
||||
|
*** 1104,1107 **** |
||||
|
--- 1085,1104 ---- |
||||
|
discard_unwind_frame ("internal_fifos"); |
||||
|
} |
||||
|
+ # if defined (HAVE_DEV_FD) |
||||
|
+ /* Reap process substitutions at the end of loops */ |
||||
|
+ switch (command->type) |
||||
|
+ { |
||||
|
+ case cm_while: |
||||
|
+ case cm_until: |
||||
|
+ case cm_for: |
||||
|
+ case cm_group: |
||||
|
+ # if defined (ARITH_FOR_COMMAND) |
||||
|
+ case cm_arith_for: |
||||
|
+ # endif |
||||
|
+ reap_procsubs (); |
||||
|
+ default: |
||||
|
+ break; |
||||
|
+ } |
||||
|
+ # endif /* HAVE_DEV_FD */ |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
||||
|
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
||||
|
*************** |
||||
|
*** 26,30 **** |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 15 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
||||
|
--- 26,30 ---- |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 16 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
@ -0,0 +1,289 @@ |
|||||
|
BASH PATCH REPORT |
||||
|
================= |
||||
|
|
||||
|
Bash-Release: 5.0 |
||||
|
Patch-ID: bash50-017 |
||||
|
|
||||
|
Bug-Reported-by: Valentin Lab <valentin.lab@kalysto.org> |
||||
|
Bug-Reference-ID: <ab981b9c-60a5-46d0-b7e6-a6d88b80df50@kalysto.org> |
||||
|
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-bash/2020-03/msg00062.html |
||||
|
|
||||
|
Bug-Description: |
||||
|
|
||||
|
There were cases where patch 16 reaped process substitution file descriptors |
||||
|
(or FIFOs) and processes to early. This is a better fix for the problem that |
||||
|
bash50-016 attempted to solve. |
||||
|
|
||||
|
Patch (apply with `patch -p0'): |
||||
|
|
||||
|
*** ../bash-5.0-patched/subst.c 2019-08-29 11:16:49.000000000 -0400 |
||||
|
--- subst.c 2020-04-02 16:24:19.000000000 -0400 |
||||
|
*************** |
||||
|
*** 5337,5341 **** |
||||
|
} |
||||
|
|
||||
|
! char * |
||||
|
copy_fifo_list (sizep) |
||||
|
int *sizep; |
||||
|
--- 5337,5341 ---- |
||||
|
} |
||||
|
|
||||
|
! void * |
||||
|
copy_fifo_list (sizep) |
||||
|
int *sizep; |
||||
|
*************** |
||||
|
*** 5343,5347 **** |
||||
|
if (sizep) |
||||
|
*sizep = 0; |
||||
|
! return (char *)NULL; |
||||
|
} |
||||
|
|
||||
|
--- 5343,5347 ---- |
||||
|
if (sizep) |
||||
|
*sizep = 0; |
||||
|
! return (void *)NULL; |
||||
|
} |
||||
|
|
||||
|
*************** |
||||
|
*** 5409,5414 **** |
||||
|
if (fifo_list[i].file) |
||||
|
{ |
||||
|
! fifo_list[j].file = fifo_list[i].file; |
||||
|
! fifo_list[j].proc = fifo_list[i].proc; |
||||
|
j++; |
||||
|
} |
||||
|
--- 5409,5419 ---- |
||||
|
if (fifo_list[i].file) |
||||
|
{ |
||||
|
! if (i != j) |
||||
|
! { |
||||
|
! fifo_list[j].file = fifo_list[i].file; |
||||
|
! fifo_list[j].proc = fifo_list[i].proc; |
||||
|
! fifo_list[i].file = (char *)NULL; |
||||
|
! fifo_list[i].proc = 0; |
||||
|
! } |
||||
|
j++; |
||||
|
} |
||||
|
*************** |
||||
|
*** 5426,5433 **** |
||||
|
void |
||||
|
close_new_fifos (list, lsize) |
||||
|
! char *list; |
||||
|
int lsize; |
||||
|
{ |
||||
|
int i; |
||||
|
|
||||
|
if (list == 0) |
||||
|
--- 5431,5439 ---- |
||||
|
void |
||||
|
close_new_fifos (list, lsize) |
||||
|
! void *list; |
||||
|
int lsize; |
||||
|
{ |
||||
|
int i; |
||||
|
+ char *plist; |
||||
|
|
||||
|
if (list == 0) |
||||
|
*************** |
||||
|
*** 5437,5442 **** |
||||
|
} |
||||
|
|
||||
|
! for (i = 0; i < lsize; i++) |
||||
|
! if (list[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) |
||||
|
unlink_fifo (i); |
||||
|
|
||||
|
--- 5443,5448 ---- |
||||
|
} |
||||
|
|
||||
|
! for (plist = (char *)list, i = 0; i < lsize; i++) |
||||
|
! if (plist[i] == 0 && i < fifo_list_size && fifo_list[i].proc != -1) |
||||
|
unlink_fifo (i); |
||||
|
|
||||
|
*************** |
||||
|
*** 5560,5568 **** |
||||
|
} |
||||
|
|
||||
|
! char * |
||||
|
copy_fifo_list (sizep) |
||||
|
int *sizep; |
||||
|
{ |
||||
|
! char *ret; |
||||
|
|
||||
|
if (nfds == 0 || totfds == 0) |
||||
|
--- 5566,5574 ---- |
||||
|
} |
||||
|
|
||||
|
! void * |
||||
|
copy_fifo_list (sizep) |
||||
|
int *sizep; |
||||
|
{ |
||||
|
! void *ret; |
||||
|
|
||||
|
if (nfds == 0 || totfds == 0) |
||||
|
*************** |
||||
|
*** 5570,5579 **** |
||||
|
if (sizep) |
||||
|
*sizep = 0; |
||||
|
! return (char *)NULL; |
||||
|
} |
||||
|
|
||||
|
if (sizep) |
||||
|
*sizep = totfds; |
||||
|
! ret = (char *)xmalloc (totfds * sizeof (pid_t)); |
||||
|
return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); |
||||
|
} |
||||
|
--- 5576,5585 ---- |
||||
|
if (sizep) |
||||
|
*sizep = 0; |
||||
|
! return (void *)NULL; |
||||
|
} |
||||
|
|
||||
|
if (sizep) |
||||
|
*sizep = totfds; |
||||
|
! ret = xmalloc (totfds * sizeof (pid_t)); |
||||
|
return (memcpy (ret, dev_fd_list, totfds * sizeof (pid_t))); |
||||
|
} |
||||
|
*************** |
||||
|
*** 5648,5655 **** |
||||
|
void |
||||
|
close_new_fifos (list, lsize) |
||||
|
! char *list; |
||||
|
int lsize; |
||||
|
{ |
||||
|
int i; |
||||
|
|
||||
|
if (list == 0) |
||||
|
--- 5654,5662 ---- |
||||
|
void |
||||
|
close_new_fifos (list, lsize) |
||||
|
! void *list; |
||||
|
int lsize; |
||||
|
{ |
||||
|
int i; |
||||
|
+ pid_t *plist; |
||||
|
|
||||
|
if (list == 0) |
||||
|
*************** |
||||
|
*** 5659,5664 **** |
||||
|
} |
||||
|
|
||||
|
! for (i = 0; i < lsize; i++) |
||||
|
! if (list[i] == 0 && i < totfds && dev_fd_list[i]) |
||||
|
unlink_fifo (i); |
||||
|
|
||||
|
--- 5666,5671 ---- |
||||
|
} |
||||
|
|
||||
|
! for (plist = (pid_t *)list, i = 0; i < lsize; i++) |
||||
|
! if (plist[i] == 0 && i < totfds && dev_fd_list[i]) |
||||
|
unlink_fifo (i); |
||||
|
|
||||
|
*** ../bash-5.0-patched/subst.h 2018-10-21 18:46:09.000000000 -0400 |
||||
|
--- subst.h 2020-04-02 16:29:28.000000000 -0400 |
||||
|
*************** |
||||
|
*** 274,280 **** |
||||
|
extern void unlink_fifo __P((int)); |
||||
|
|
||||
|
! extern char *copy_fifo_list __P((int *)); |
||||
|
! extern void unlink_new_fifos __P((char *, int)); |
||||
|
! extern void close_new_fifos __P((char *, int)); |
||||
|
|
||||
|
extern void clear_fifo_list __P((void)); |
||||
|
--- 274,279 ---- |
||||
|
extern void unlink_fifo __P((int)); |
||||
|
|
||||
|
! extern void *copy_fifo_list __P((int *)); |
||||
|
! extern void close_new_fifos __P((void *, int)); |
||||
|
|
||||
|
extern void clear_fifo_list __P((void)); |
||||
|
*** ../bash-5.0-patched/execute_cmd.c 2020-02-06 20:16:48.000000000 -0500 |
||||
|
--- execute_cmd.c 2020-04-02 17:00:10.000000000 -0400 |
||||
|
*************** |
||||
|
*** 565,569 **** |
||||
|
#if defined (PROCESS_SUBSTITUTION) |
||||
|
volatile int ofifo, nfifo, osize, saved_fifo; |
||||
|
! volatile char *ofifo_list; |
||||
|
#endif |
||||
|
|
||||
|
--- 565,569 ---- |
||||
|
#if defined (PROCESS_SUBSTITUTION) |
||||
|
volatile int ofifo, nfifo, osize, saved_fifo; |
||||
|
! volatile void *ofifo_list; |
||||
|
#endif |
||||
|
|
||||
|
*************** |
||||
|
*** 751,760 **** |
||||
|
# endif |
||||
|
|
||||
|
! if (variable_context != 0) /* XXX - also if sourcelevel != 0? */ |
||||
|
{ |
||||
|
ofifo = num_fifos (); |
||||
|
ofifo_list = copy_fifo_list ((int *)&osize); |
||||
|
begin_unwind_frame ("internal_fifos"); |
||||
|
! add_unwind_protect (xfree, ofifo_list); |
||||
|
saved_fifo = 1; |
||||
|
} |
||||
|
--- 751,762 ---- |
||||
|
# endif |
||||
|
|
||||
|
! /* XXX - also if sourcelevel != 0? */ |
||||
|
! if (variable_context != 0) |
||||
|
{ |
||||
|
ofifo = num_fifos (); |
||||
|
ofifo_list = copy_fifo_list ((int *)&osize); |
||||
|
begin_unwind_frame ("internal_fifos"); |
||||
|
! if (ofifo_list) |
||||
|
! add_unwind_protect (xfree, ofifo_list); |
||||
|
saved_fifo = 1; |
||||
|
} |
||||
|
*************** |
||||
|
*** 1100,1123 **** |
||||
|
nfifo = num_fifos (); |
||||
|
if (nfifo > ofifo) |
||||
|
! close_new_fifos ((char *)ofifo_list, osize); |
||||
|
free ((void *)ofifo_list); |
||||
|
discard_unwind_frame ("internal_fifos"); |
||||
|
} |
||||
|
- # if defined (HAVE_DEV_FD) |
||||
|
- /* Reap process substitutions at the end of loops */ |
||||
|
- switch (command->type) |
||||
|
- { |
||||
|
- case cm_while: |
||||
|
- case cm_until: |
||||
|
- case cm_for: |
||||
|
- case cm_group: |
||||
|
- # if defined (ARITH_FOR_COMMAND) |
||||
|
- case cm_arith_for: |
||||
|
- # endif |
||||
|
- reap_procsubs (); |
||||
|
- default: |
||||
|
- break; |
||||
|
- } |
||||
|
- # endif /* HAVE_DEV_FD */ |
||||
|
#endif |
||||
|
|
||||
|
--- 1102,1109 ---- |
||||
|
nfifo = num_fifos (); |
||||
|
if (nfifo > ofifo) |
||||
|
! close_new_fifos ((void *)ofifo_list, osize); |
||||
|
free ((void *)ofifo_list); |
||||
|
discard_unwind_frame ("internal_fifos"); |
||||
|
} |
||||
|
#endif |
||||
|
|
||||
|
|
||||
|
*** ../bash-5.0/patchlevel.h 2016-06-22 14:51:03.000000000 -0400 |
||||
|
--- patchlevel.h 2016-10-01 11:01:28.000000000 -0400 |
||||
|
*************** |
||||
|
*** 26,30 **** |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 16 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
||||
|
--- 26,30 ---- |
||||
|
looks for to find the patch level (for the sccs version string). */ |
||||
|
|
||||
|
! #define PATCHLEVEL 17 |
||||
|
|
||||
|
#endif /* _PATCHLEVEL_H_ */ |
Loading…
Reference in new issue