From http://ftp.gnu.org/pub/gnu/bash/bash-4.3-patches/bash43-039

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>

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

Bash-Release:	4.3
Patch-ID:	bash43-039

Bug-Reported-by:	SN <poczta-sn@gazeta.pl>
Bug-Reference-ID:	<54E2554C.205@gazeta.pl>
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html

Bug-Description:

Using the output of `declare -p' when run in a function can result in variables
that are invisible to `declare -p'.  This problem occurs when an assignment
builtin such as `declare' receives a quoted compound array assignment as one of
its arguments.

Patch (apply with `patch -p0'):

*** a/bash-4.3-patched/arrayfunc.c	2014-10-01 13:08:48.000000000 -0400
--- b/arrayfunc.c	2015-02-19 14:33:05.000000000 -0500
***************
*** 405,408 ****
--- 405,411 ----
      else
        array_insert (a, i, l->word->word);
+ 
+   VUNSETATTR (var, att_invisible);	/* no longer invisible */
+ 
    return var;
  }
***************
*** 635,638 ****
--- 638,645 ----
    if (nlist)
      dispose_words (nlist);
+ 
+   if (var)
+     VUNSETATTR (var, att_invisible);	/* no longer invisible */
+ 
    return (var);
  }
*** a/bash-4.3/patchlevel.h	2012-12-29 10:47:57.000000000 -0500
--- b/patchlevel.h	2014-03-20 20:01:28.000000000 -0400
***************
*** 26,30 ****
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 38
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 39
  
  #endif /* _PATCHLEVEL_H_ */
