From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-023

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

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

Bash-Release:	4.4
Patch-ID:	bash44-023

Bug-Reported-by:	Martijn Dekker <martijn@inlv.org>
Bug-Reference-ID:	<5326d6b9-2625-1d32-3e6e-ad1d15462c09@inlv.org>
Bug-Reference-URL:	http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00041.html

Bug-Description:

When sourcing a file from an interactive shell, setting the SIGINT handler
to the default and typing ^C will cause the shell to exit.

Patch (apply with `patch -p0'):

*** bash-4.4-patched/builtins/trap.def	2016-01-25 13:32:38.000000000 -0500
--- b/builtins/trap.def	2016-11-06 12:04:35.000000000 -0500
***************
*** 99,102 ****
--- b/99,103 ----
  
  extern int posixly_correct, subshell_environment;
+ extern int sourcelevel, running_trap;
  
  int
***************
*** 213,216 ****
--- b/214,220 ----
  			if (interactive)
  			  set_signal_handler (SIGINT, sigint_sighandler);
+ 			/* special cases for interactive == 0 */
+ 			else if (interactive_shell && (sourcelevel||running_trap))
+ 			  set_signal_handler (SIGINT, sigint_sighandler);
  			else
  			  set_signal_handler (SIGINT, termsig_sighandler);
*** bash-4.4/patchlevel.h	2016-06-22 14:51:03.000000000 -0400
--- b/patchlevel.h	2016-10-01 11:01:28.000000000 -0400
***************
*** 26,30 ****
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 22
  
  #endif /* _PATCHLEVEL_H_ */
--- b/26,30 ----
     looks for to find the patch level (for the sccs version string). */
  
! #define PATCHLEVEL 23
  
  #endif /* _PATCHLEVEL_H_ */
