BASH PATCH REPORT ================= Bash-Release: 4.2 Patch-ID: bash42-010 Bug-Reported-by: Mike Frysinger Bug-Reference-ID: <201104122356.20160.vapier@gentoo.org> Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2011-04/msg00058.html Bug-Description: Bash did not correctly print/reproduce here documents attached to commands inside compound commands such as arithmetic for loops and user-specified subshells. This affected the execution of such commands inside a shell function when the function definition is saved and later restored using `.' or `eval'. Patch (apply with `patch -p0'): *** ../bash-4.2-patched/print_cmd.c 2010-05-30 18:34:08.000000000 -0400 --- print_cmd.c 2011-04-14 10:43:18.000000000 -0400 *************** *** 316,319 **** --- 317,321 ---- skip_this_indent++; make_command_string_internal (command->value.Subshell->command); + PRINT_DEFERRED_HEREDOCS (""); cprintf (" )"); break; *************** *** 593,596 **** --- 606,610 ---- indentation += indentation_amount; make_command_string_internal (arith_for_command->action); + PRINT_DEFERRED_HEREDOCS (""); semicolon (); indentation -= indentation_amount; *************** *** 654,657 **** --- 668,672 ---- make_command_string_internal (group_command->command); + PRINT_DEFERRED_HEREDOCS (""); if (inside_function_def) *** ../bash-4.2-patched/patchlevel.h Sat Jun 12 20:14:48 2010 --- patchlevel.h Thu Feb 24 21:41:34 2011 *************** *** 26,30 **** looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 9 #endif /* _PATCHLEVEL_H_ */ --- 26,30 ---- looks for to find the patch level (for the sccs version string). */ ! #define PATCHLEVEL 10 #endif /* _PATCHLEVEL_H_ */