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

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

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

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

Bug-Reported-by:	Dreamcat4 <dreamcat4@gmail.com>
Bug-Reference-ID:	<CAN39uTpAEs2GFu4ebC_SfSVMRTh-DJ9YanrY4BZZ3OO+CCHjng@mail.gmail.com>
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html

Bug-Description:

If neither the -f nor -v options is supplied to unset, and a name argument is
found to be a function and unset, subsequent name arguments are not treated as
variables before attempting to unset a function by that name.

Patch (apply with `patch -p0'):

*** a/bash-4.3-patched/builtins/set.def	2013-04-19 07:20:34.000000000 -0400
--- b/builtins/set.def	2015-05-05 13:25:36.000000000 -0400
***************
*** 752,758 ****
--- 797,805 ----
  {
    int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
+   int global_unset_func, global_unset_var;
    char *name;
  
    unset_function = unset_variable = unset_array = nameref = any_failed = 0;
+   global_unset_func = global_unset_var = 0;
  
    reset_internal_getopt ();
***************
*** 762,769 ****
  	{
  	case 'f':
! 	  unset_function = 1;
  	  break;
  	case 'v':
! 	  unset_variable = 1;
  	  break;
  	case 'n':
--- 809,816 ----
  	{
  	case 'f':
! 	  global_unset_func = 1;
  	  break;
  	case 'v':
! 	  global_unset_var = 1;
  	  break;
  	case 'n':
***************
*** 778,782 ****
    list = loptend;
  
!   if (unset_function && unset_variable)
      {
        builtin_error (_("cannot simultaneously unset a function and a variable"));
--- 825,829 ----
    list = loptend;
  
!   if (global_unset_func && global_unset_var)
      {
        builtin_error (_("cannot simultaneously unset a function and a variable"));
***************
*** 796,799 ****
--- 843,849 ----
        name = list->word->word;
  
+       unset_function = global_unset_func;
+       unset_variable = global_unset_var;
+ 
  #if defined (ARRAY_VARS)
        unset_array = 0;

*** 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 33
  
  #endif /* _PATCHLEVEL_H_ */
--- 26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 34
  
  #endif /* _PATCHLEVEL_H_ */
