			     BASH PATCH REPORT
			     =================

Bash-Release:	4.1
Patch-ID:	bash41-006

Bug-Reported-by:	Mike Frysinger <vapier@gentoo.org>
Bug-Reference-ID:	<201003210155.56618.vapier@gentoo.org>
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2010-03/msg00063.html

Bug-Description:

Bash did not correctly print/reproduce here documents attached to commands
inside compound commands such as for and while.  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.1-patched/print_cmd.c	2009-09-16 15:32:26.000000000 -0400
--- ./print_cmd.c	2010-03-22 21:15:30.000000000 -0400
***************
*** 114,117 ****
--- 114,123 ----
  #define CHECK_XTRACE_FP	xtrace_fp = (xtrace_fp ? xtrace_fp : stderr)
  
+ #define PRINT_DEFERRED_HEREDOCS(x) \
+   do { \
+     if (deferred_heredocs) \
+       print_deferred_heredocs (x); \
+   } while (0)
+ 
  /* Non-zero means the stuff being printed is inside of a function def. */
  static int inside_function_def;
***************
*** 561,571 ****
  {
    print_for_command_head (for_command);
- 
    cprintf (";");
    newline ("do\n");
    indentation += indentation_amount;
    make_command_string_internal (for_command->action);
    semicolon ();
    indentation -= indentation_amount;
    newline ("done");
  }
--- 566,578 ----
  {
    print_for_command_head (for_command);
    cprintf (";");
    newline ("do\n");
+ 
    indentation += indentation_amount;
    make_command_string_internal (for_command->action);
+   PRINT_DEFERRED_HEREDOCS ("");
    semicolon ();
    indentation -= indentation_amount;
+ 
    newline ("done");
  }
*** ../bash-4.1-patched/patchlevel.h	2009-10-01 16:39:22.000000000 -0400
--- ./patchlevel.h	2010-01-14 09:38:08.000000000 -0500
***************
*** 26,30 ****
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 5
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 6
  
  #endif /* _PATCHLEVEL_H_ */
