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

Bash-Release:	4.2
Patch-ID:	bash42-017

Bug-Reported-by:	Curtis Doty <Curtis@GreenKey.net>
Bug-Reference-ID:	<20110621035324.A4F70849F59@mx1.iParadigms.net>
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2011-06/msg00053.html

Bug-Description:

Using `read -a foo' where foo was an already-declared associative array
caused the shell to die with a segmentation fault.

Patch (apply with `patch -p0'):

*** ../bash-4.2-patched/builtins/read.def	2011-01-04 11:43:36.000000000 -0500
--- ./builtins/read.def	2011-06-21 10:31:02.000000000 -0400
***************
*** 643,646 ****
--- 642,651 ----
  	  return EXECUTION_FAILURE;	/* readonly or noassign */
  	}
+       if (assoc_p (var))
+ 	{
+           builtin_error (_("%s: cannot convert associative to indexed array"), arrayname);
+ 	  xfree (input_string);
+ 	  return EXECUTION_FAILURE;	/* existing associative array */
+ 	}
        array_flush (array_cell (var));
  
*** ../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 16
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 17
  
  #endif /* _PATCHLEVEL_H_ */
