summaryrefslogtreecommitdiff
blob: be7a5def76d5255c1462662bc98194daa15364dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00031.html

*** ../bash-4.3-patched/bashline.c	2014-05-14 09:22:39.000000000 -0400
--- bashline.c	2014-09-08 11:28:56.000000000 -0400
***************
*** 203,206 ****
--- 203,207 ----
  extern int array_needs_making;
  extern int posixly_correct, no_symbolic_links;
+ extern int sigalrm_seen;
  extern char *current_prompt_string, *ps1_prompt;
  extern STRING_INT_ALIST word_token_alist[];
***************
*** 4209,4214 ****
    /* If we're going to longjmp to top_level, make sure we clean up readline.
       check_signals will call QUIT, which will eventually longjmp to top_level,
!      calling run_interrupt_trap along the way. */
!   if (interrupt_state)
      rl_cleanup_after_signal ();
    bashline_reset_event_hook ();
--- 4262,4268 ----
    /* If we're going to longjmp to top_level, make sure we clean up readline.
       check_signals will call QUIT, which will eventually longjmp to top_level,
!      calling run_interrupt_trap along the way.  The check for sigalrm_seen is
!      to clean up the read builtin's state. */
!   if (terminating_signal || interrupt_state || sigalrm_seen)
      rl_cleanup_after_signal ();
    bashline_reset_event_hook ();
*** ../bash-4.3-patched/sig.c	2014-01-10 15:06:06.000000000 -0500
--- sig.c	2014-09-08 11:26:33.000000000 -0400
***************
*** 533,538 ****
    /* Set the event hook so readline will call it after the signal handlers
       finish executing, so if this interrupted character input we can get
!      quick response. */
!   if (interactive_shell && interactive && no_line_editing == 0)
      bashline_set_event_hook ();
  #endif
--- 533,540 ----
    /* Set the event hook so readline will call it after the signal handlers
       finish executing, so if this interrupted character input we can get
!      quick response.  If readline is active or has modified the terminal we
!      need to set this no matter what the signal is, though the check for
!      RL_STATE_TERMPREPPED is possibly redundant. */
!   if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED))
      bashline_set_event_hook ();
  #endif