Karsten Hopp 051fbe
To: vim-dev@vim.org
Karsten Hopp 051fbe
Subject: Patch 7.2.130
Karsten Hopp 051fbe
Fcc: outbox
Karsten Hopp 051fbe
From: Bram Moolenaar <Bram@moolenaar.net>
Karsten Hopp 051fbe
Mime-Version: 1.0
Karsten Hopp 051fbe
Content-Type: text/plain; charset=ISO-8859-1
Karsten Hopp 051fbe
Content-Transfer-Encoding: 8bit
Karsten Hopp 051fbe
------------
Karsten Hopp 051fbe
Karsten Hopp 051fbe
Patch 7.2.130
Karsten Hopp 051fbe
Problem:    Vim may haing until CTRL-C is typed when using CTRL-Z.
Karsten Hopp 051fbe
Solution:   Avoid using pause().  Also use "volatile" for variables used in
Karsten Hopp 051fbe
            signal functions. (Dominique Pelle)
Karsten Hopp 051fbe
Files:      src/auto/configure, src/configure.in, src/config.h.in,
Karsten Hopp 051fbe
            src/globals.h, src/os_unix.c
Karsten Hopp 051fbe
    
Karsten Hopp 051fbe
Karsten Hopp 051fbe
*** ../vim-7.2.129/src/auto/configure	Thu Nov 20 10:36:04 2008
Karsten Hopp 051fbe
--- src/auto/configure	Mon Mar  2 02:36:52 2009
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 11565,11570 ****
Karsten Hopp 051fbe
--- 11565,11631 ----
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  fi
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
+ { $as_echo "$as_me:$LINENO: checking for working volatile" >&5
Karsten Hopp 051fbe
+ $as_echo_n "checking for working volatile... " >&6; }
Karsten Hopp 051fbe
+ if test "${ac_cv_c_volatile+set}" = set; then
Karsten Hopp 051fbe
+   $as_echo_n "(cached) " >&6
Karsten Hopp 051fbe
+ else
Karsten Hopp 051fbe
+   cat >conftest.$ac_ext <<_ACEOF
Karsten Hopp 051fbe
+ /* confdefs.h.  */
Karsten Hopp 051fbe
+ _ACEOF
Karsten Hopp 051fbe
+ cat confdefs.h >>conftest.$ac_ext
Karsten Hopp 051fbe
+ cat >>conftest.$ac_ext <<_ACEOF
Karsten Hopp 051fbe
+ /* end confdefs.h.  */
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
+ int
Karsten Hopp 051fbe
+ main ()
Karsten Hopp 051fbe
+ {
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
+ volatile int x;
Karsten Hopp 051fbe
+ int * volatile y = (int *) 0;
Karsten Hopp 051fbe
+ return !x && !y;
Karsten Hopp 051fbe
+   ;
Karsten Hopp 051fbe
+   return 0;
Karsten Hopp 051fbe
+ }
Karsten Hopp 051fbe
+ _ACEOF
Karsten Hopp 051fbe
+ rm -f conftest.$ac_objext
Karsten Hopp 051fbe
+ if { (ac_try="$ac_compile"
Karsten Hopp 051fbe
+ case "(($ac_try" in
Karsten Hopp 051fbe
+   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
Karsten Hopp 051fbe
+   *) ac_try_echo=$ac_try;;
Karsten Hopp 051fbe
+ esac
Karsten Hopp 051fbe
+ eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
Karsten Hopp 051fbe
+ $as_echo "$ac_try_echo") >&5
Karsten Hopp 051fbe
+   (eval "$ac_compile") 2>conftest.er1
Karsten Hopp 051fbe
+   ac_status=$?
Karsten Hopp 051fbe
+   grep -v '^ *+' conftest.er1 >conftest.err
Karsten Hopp 051fbe
+   rm -f conftest.er1
Karsten Hopp 051fbe
+   cat conftest.err >&5
Karsten Hopp 051fbe
+   $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
Karsten Hopp 051fbe
+   (exit $ac_status); } && {
Karsten Hopp 051fbe
+ 	 test -z "$ac_c_werror_flag" ||
Karsten Hopp 051fbe
+ 	 test ! -s conftest.err
Karsten Hopp 051fbe
+        } && test -s conftest.$ac_objext; then
Karsten Hopp 051fbe
+   ac_cv_c_volatile=yes
Karsten Hopp 051fbe
+ else
Karsten Hopp 051fbe
+   $as_echo "$as_me: failed program was:" >&5
Karsten Hopp 051fbe
+ sed 's/^/| /' conftest.$ac_ext >&5
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
+ 	ac_cv_c_volatile=no
Karsten Hopp 051fbe
+ fi
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
+ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
Karsten Hopp 051fbe
+ fi
Karsten Hopp 051fbe
+ { $as_echo "$as_me:$LINENO: result: $ac_cv_c_volatile" >&5
Karsten Hopp 051fbe
+ $as_echo "$ac_cv_c_volatile" >&6; }
Karsten Hopp 051fbe
+ if test $ac_cv_c_volatile = no; then
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
+ cat >>confdefs.h <<\_ACEOF
Karsten Hopp 051fbe
+ #define volatile /**/
Karsten Hopp 051fbe
+ _ACEOF
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
+ fi
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
  { $as_echo "$as_me:$LINENO: checking for mode_t" >&5
Karsten Hopp 051fbe
  $as_echo_n "checking for mode_t... " >&6; }
Karsten Hopp 051fbe
  if test "${ac_cv_type_mode_t+set}" = set; then
Karsten Hopp 051fbe
*** ../vim-7.2.129/src/configure.in	Thu Nov 20 10:36:04 2008
Karsten Hopp 051fbe
--- src/configure.in	Sun Feb 22 21:47:44 2009
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 2148,2153 ****
Karsten Hopp 051fbe
--- 2148,2154 ----
Karsten Hopp 051fbe
  dnl Checks for typedefs, structures, and compiler characteristics.
Karsten Hopp 051fbe
  AC_PROG_GCC_TRADITIONAL
Karsten Hopp 051fbe
  AC_C_CONST
Karsten Hopp 051fbe
+ AC_C_VOLATILE
Karsten Hopp 051fbe
  AC_TYPE_MODE_T
Karsten Hopp 051fbe
  AC_TYPE_OFF_T
Karsten Hopp 051fbe
  AC_TYPE_PID_T
Karsten Hopp 051fbe
*** ../vim-7.2.129/src/config.h.in	Tue Jun 24 23:47:46 2008
Karsten Hopp 051fbe
--- src/config.h.in	Mon Feb 23 00:13:17 2009
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 50,55 ****
Karsten Hopp 051fbe
--- 50,58 ----
Karsten Hopp 051fbe
  /* Define to empty if the keyword does not work.  */
Karsten Hopp 051fbe
  #undef const
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
+ /* Define to empty if the keyword does not work.  */
Karsten Hopp 051fbe
+ #undef volatile
Karsten Hopp 051fbe
+ 
Karsten Hopp 051fbe
  /* Define to `int' if <sys/types.h> doesn't define.  */
Karsten Hopp 051fbe
  #undef mode_t
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
*** ../vim-7.2.129/src/globals.h	Tue Jan  6 16:13:42 2009
Karsten Hopp 051fbe
--- src/globals.h	Mon Mar  2 02:40:16 2009
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 482,489 ****
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
   * While executing external commands or in Ex mode, should not insert GUI
Karsten Hopp 051fbe
   * events in the input buffer: Set hold_gui_events to non-zero.
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
! EXTERN int	hold_gui_events INIT(= 0);
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
   * When resizing the shell is postponed, remember the new size, and call
Karsten Hopp 051fbe
--- 482,491 ----
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
   * While executing external commands or in Ex mode, should not insert GUI
Karsten Hopp 051fbe
   * events in the input buffer: Set hold_gui_events to non-zero.
Karsten Hopp 051fbe
+  *
Karsten Hopp 051fbe
+  * volatile because it is used in signal handler sig_sysmouse().
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
! EXTERN volatile int hold_gui_events INIT(= 0);
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
   * When resizing the shell is postponed, remember the new size, and call
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 597,603 ****
Karsten Hopp 051fbe
  EXTERN int	really_exiting INIT(= FALSE);
Karsten Hopp 051fbe
  				/* TRUE when we are sure to exit, e.g., after
Karsten Hopp 051fbe
  				 * a deadly signal */
Karsten Hopp 051fbe
! EXTERN int	full_screen INIT(= FALSE);
Karsten Hopp 051fbe
  				/* TRUE when doing full-screen output
Karsten Hopp 051fbe
  				 * otherwise only writing some messages */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
--- 599,606 ----
Karsten Hopp 051fbe
  EXTERN int	really_exiting INIT(= FALSE);
Karsten Hopp 051fbe
  				/* TRUE when we are sure to exit, e.g., after
Karsten Hopp 051fbe
  				 * a deadly signal */
Karsten Hopp 051fbe
! /* volatile because it is used in signal handler deathtrap(). */
Karsten Hopp 051fbe
! EXTERN volatile int full_screen INIT(= FALSE);
Karsten Hopp 051fbe
  				/* TRUE when doing full-screen output
Karsten Hopp 051fbe
  				 * otherwise only writing some messages */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 739,748 ****
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
  EXTERN JMP_BUF lc_jump_env;	/* argument to SETJMP() */
Karsten Hopp 051fbe
  # ifdef SIGHASARG
Karsten Hopp 051fbe
! EXTERN int lc_signal;		/* catched signal number, 0 when no was signal
Karsten Hopp 051fbe
! 				   catched; used for mch_libcall() */
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
! EXTERN int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
Karsten Hopp 051fbe
--- 747,758 ----
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
  EXTERN JMP_BUF lc_jump_env;	/* argument to SETJMP() */
Karsten Hopp 051fbe
  # ifdef SIGHASARG
Karsten Hopp 051fbe
! /* volatile because it is used in signal handlers. */
Karsten Hopp 051fbe
! EXTERN volatile int lc_signal;	/* caught signal number, 0 when no was signal
Karsten Hopp 051fbe
! 				   caught; used for mch_libcall() */
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
! /* volatile because it is used in signal handler deathtrap(). */
Karsten Hopp 051fbe
! EXTERN volatile int lc_active INIT(= FALSE); /* TRUE when lc_jump_env is valid. */
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  #if defined(FEAT_MBYTE) || defined(FEAT_POSTSCRIPT)
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 986,992 ****
Karsten Hopp 051fbe
  EXTERN FILE	*scriptout  INIT(= NULL);   /* stream to write script to */
Karsten Hopp 051fbe
  EXTERN int	read_cmd_fd INIT(= 0);	    /* fd to read commands from */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! EXTERN int	got_int INIT(= FALSE);	    /* set to TRUE when interrupt
Karsten Hopp 051fbe
  						signal occurred */
Karsten Hopp 051fbe
  #ifdef USE_TERM_CONSOLE
Karsten Hopp 051fbe
  EXTERN int	term_console INIT(= FALSE); /* set to TRUE when console used */
Karsten Hopp 051fbe
--- 996,1003 ----
Karsten Hopp 051fbe
  EXTERN FILE	*scriptout  INIT(= NULL);   /* stream to write script to */
Karsten Hopp 051fbe
  EXTERN int	read_cmd_fd INIT(= 0);	    /* fd to read commands from */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! /* volatile because it is used in signal handler catch_sigint(). */
Karsten Hopp 051fbe
! EXTERN volatile int got_int INIT(= FALSE);    /* set to TRUE when interrupt
Karsten Hopp 051fbe
  						signal occurred */
Karsten Hopp 051fbe
  #ifdef USE_TERM_CONSOLE
Karsten Hopp 051fbe
  EXTERN int	term_console INIT(= FALSE); /* set to TRUE when console used */
Karsten Hopp 051fbe
*** ../vim-7.2.129/src/os_unix.c	Sun Feb 22 02:51:37 2009
Karsten Hopp 051fbe
--- src/os_unix.c	Mon Mar  2 01:05:50 2009
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 181,187 ****
Karsten Hopp 051fbe
  	&& defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
Karsten Hopp 051fbe
  # define SET_SIG_ALARM
Karsten Hopp 051fbe
  static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
Karsten Hopp 051fbe
! static int sig_alarm_called;
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
--- 181,188 ----
Karsten Hopp 051fbe
  	&& defined(FEAT_TITLE) && !defined(FEAT_GUI_GTK)
Karsten Hopp 051fbe
  # define SET_SIG_ALARM
Karsten Hopp 051fbe
  static RETSIGTYPE sig_alarm __ARGS(SIGPROTOARG);
Karsten Hopp 051fbe
! /* volatile because it is used in signal handler sig_alarm(). */
Karsten Hopp 051fbe
! static volatile int sig_alarm_called;
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  static RETSIGTYPE deathtrap __ARGS(SIGPROTOARG);
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 201,213 ****
Karsten Hopp 051fbe
  # define SIG_ERR	((RETSIGTYPE (*)())-1)
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! static int	do_resize = FALSE;
Karsten Hopp 051fbe
  #ifndef __EMX__
Karsten Hopp 051fbe
  static char_u	*extra_shell_arg = NULL;
Karsten Hopp 051fbe
  static int	show_shell_mess = TRUE;
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
! static int	deadly_signal = 0;	    /* The signal we caught */
Karsten Hopp 051fbe
! static int	in_mch_delay = FALSE;	    /* sleeping in mch_delay() */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  static int curr_tmode = TMODE_COOK;	/* contains current terminal mode */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
--- 202,217 ----
Karsten Hopp 051fbe
  # define SIG_ERR	((RETSIGTYPE (*)())-1)
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! /* volatile because it is used in signal handler sig_winch(). */
Karsten Hopp 051fbe
! static volatile int do_resize = FALSE;
Karsten Hopp 051fbe
  #ifndef __EMX__
Karsten Hopp 051fbe
  static char_u	*extra_shell_arg = NULL;
Karsten Hopp 051fbe
  static int	show_shell_mess = TRUE;
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
! /* volatile because it is used in signal handler deathtrap(). */
Karsten Hopp 051fbe
! static volatile int deadly_signal = 0;	    /* The signal we caught */
Karsten Hopp 051fbe
! /* volatile because it is used in signal handler deathtrap(). */
Karsten Hopp 051fbe
! static volatile int in_mch_delay = FALSE;    /* sleeping in mch_delay() */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  static int curr_tmode = TMODE_COOK;	/* contains current terminal mode */
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 802,808 ****
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
!  * We need correct potatotypes for a signal function, otherwise mean compilers
Karsten Hopp 051fbe
   * will barf when the second argument to signal() is ``wrong''.
Karsten Hopp 051fbe
   * Let me try it with a few tricky defines from my own osdef.h	(jw).
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
--- 806,812 ----
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
!  * We need correct prototypes for a signal function, otherwise mean compilers
Karsten Hopp 051fbe
   * will barf when the second argument to signal() is ``wrong''.
Karsten Hopp 051fbe
   * Let me try it with a few tricky defines from my own osdef.h	(jw).
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 1068,1080 ****
Karsten Hopp 051fbe
      SIGRETURN;
Karsten Hopp 051fbe
  }
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! #ifdef _REENTRANT
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
   * On Solaris with multi-threading, suspending might not work immediately.
Karsten Hopp 051fbe
   * Catch the SIGCONT signal, which will be used as an indication whether the
Karsten Hopp 051fbe
   * suspending has been done or not.
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
! static int sigcont_received;
Karsten Hopp 051fbe
  static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
--- 1072,1089 ----
Karsten Hopp 051fbe
      SIGRETURN;
Karsten Hopp 051fbe
  }
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! #if defined(_REENTRANT) && defined(SIGCONT)
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
   * On Solaris with multi-threading, suspending might not work immediately.
Karsten Hopp 051fbe
   * Catch the SIGCONT signal, which will be used as an indication whether the
Karsten Hopp 051fbe
   * suspending has been done or not.
Karsten Hopp 051fbe
+  *
Karsten Hopp 051fbe
+  * On Linux, signal is not always handled immediately either.
Karsten Hopp 051fbe
+  * See https://bugs.launchpad.net/bugs/291373
Karsten Hopp 051fbe
+  *
Karsten Hopp 051fbe
+  * volatile because it is used in in signal handler sigcont_handler().
Karsten Hopp 051fbe
   */
Karsten Hopp 051fbe
! static volatile int sigcont_received;
Karsten Hopp 051fbe
  static RETSIGTYPE sigcont_handler __ARGS(SIGPROTOARG);
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  /*
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 1118,1132 ****
Karsten Hopp 051fbe
      }
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! # ifdef _REENTRANT
Karsten Hopp 051fbe
      sigcont_received = FALSE;
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
      kill(0, SIGTSTP);	    /* send ourselves a STOP signal */
Karsten Hopp 051fbe
! # ifdef _REENTRANT
Karsten Hopp 051fbe
!     /* When we didn't suspend immediately in the kill(), do it now.  Happens
Karsten Hopp 051fbe
!      * on multi-threaded Solaris. */
Karsten Hopp 051fbe
!     if (!sigcont_received)
Karsten Hopp 051fbe
! 	pause();
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  # ifdef FEAT_TITLE
Karsten Hopp 051fbe
--- 1127,1154 ----
Karsten Hopp 051fbe
      }
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
! # if defined(_REENTRANT) && defined(SIGCONT)
Karsten Hopp 051fbe
      sigcont_received = FALSE;
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
      kill(0, SIGTSTP);	    /* send ourselves a STOP signal */
Karsten Hopp 051fbe
! # if defined(_REENTRANT) && defined(SIGCONT)
Karsten Hopp 051fbe
!     /*
Karsten Hopp 051fbe
!      * Wait for the SIGCONT signal to be handled. It generally happens
Karsten Hopp 051fbe
!      * immediately, but somehow not all the time. Do not call pause()
Karsten Hopp 051fbe
!      * because there would be race condition which would hang Vim if
Karsten Hopp 051fbe
!      * signal happened in between the test of sigcont_received and the
Karsten Hopp 051fbe
!      * call to pause(). If signal is not yet received, call sleep(0)
Karsten Hopp 051fbe
!      * to just yield CPU. Signal should then be received. If somehow
Karsten Hopp 051fbe
!      * it's still not received, sleep 1, 2, 3 ms. Don't bother waiting
Karsten Hopp 051fbe
!      * further if signal is not received after 1+2+3+4 ms (not expected
Karsten Hopp 051fbe
!      * to happen).
Karsten Hopp 051fbe
!      */
Karsten Hopp 051fbe
!     {
Karsten Hopp 051fbe
! 	long wait;
Karsten Hopp 051fbe
! 	for (wait = 0; !sigcont_received && wait <= 3L; wait++)
Karsten Hopp 051fbe
! 	    /* Loop is not entered most of the time */
Karsten Hopp 051fbe
! 	    mch_delay(wait, FALSE);
Karsten Hopp 051fbe
!     }
Karsten Hopp 051fbe
  # endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
  # ifdef FEAT_TITLE
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 1175,1181 ****
Karsten Hopp 051fbe
  #ifdef SIGTSTP
Karsten Hopp 051fbe
      signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
! #ifdef _REENTRANT
Karsten Hopp 051fbe
      signal(SIGCONT, sigcont_handler);
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
--- 1197,1203 ----
Karsten Hopp 051fbe
  #ifdef SIGTSTP
Karsten Hopp 051fbe
      signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
! #if defined(_REENTRANT) && defined(SIGCONT)
Karsten Hopp 051fbe
      signal(SIGCONT, sigcont_handler);
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
  
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 1234,1240 ****
Karsten Hopp 051fbe
  reset_signals()
Karsten Hopp 051fbe
  {
Karsten Hopp 051fbe
      catch_signals(SIG_DFL, SIG_DFL);
Karsten Hopp 051fbe
! #ifdef _REENTRANT
Karsten Hopp 051fbe
      /* SIGCONT isn't in the list, because its default action is ignore */
Karsten Hopp 051fbe
      signal(SIGCONT, SIG_DFL);
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
--- 1256,1262 ----
Karsten Hopp 051fbe
  reset_signals()
Karsten Hopp 051fbe
  {
Karsten Hopp 051fbe
      catch_signals(SIG_DFL, SIG_DFL);
Karsten Hopp 051fbe
! #if defined(_REENTRANT) && defined(SIGCONT)
Karsten Hopp 051fbe
      /* SIGCONT isn't in the list, because its default action is ignore */
Karsten Hopp 051fbe
      signal(SIGCONT, SIG_DFL);
Karsten Hopp 051fbe
  #endif
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 5899,5905 ****
Karsten Hopp 051fbe
--- 5921,5929 ----
Karsten Hopp 051fbe
  	     * we are going to suspend or starting an external process
Karsten Hopp 051fbe
  	     * so we shouldn't  have problem with this
Karsten Hopp 051fbe
  	     */
Karsten Hopp 051fbe
+ # ifdef SIGTSTP
Karsten Hopp 051fbe
  	    signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL);
Karsten Hopp 051fbe
+ # endif
Karsten Hopp 051fbe
  	    return 1; /* succeed */
Karsten Hopp 051fbe
  	}
Karsten Hopp 051fbe
  	if (gpm_fd == -2)
Karsten Hopp 051fbe
*** ../vim-7.2.129/src/version.c	Mon Mar  2 02:11:09 2009
Karsten Hopp 051fbe
--- src/version.c	Mon Mar  2 02:36:00 2009
Karsten Hopp 051fbe
***************
Karsten Hopp 051fbe
*** 678,679 ****
Karsten Hopp 051fbe
--- 678,681 ----
Karsten Hopp 051fbe
  {   /* Add new patch number below this line */
Karsten Hopp 051fbe
+ /**/
Karsten Hopp 051fbe
+     130,
Karsten Hopp 051fbe
  /**/
Karsten Hopp 051fbe
Karsten Hopp 051fbe
-- 
Karsten Hopp 051fbe
hundred-and-one symptoms of being an internet addict:
Karsten Hopp 051fbe
148. You find it easier to dial-up the National Weather Service
Karsten Hopp 051fbe
     Weather/your_town/now.html than to simply look out the window.
Karsten Hopp 051fbe
Karsten Hopp 051fbe
 /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
Karsten Hopp 051fbe
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
Karsten Hopp 051fbe
\\\        download, build and distribute -- http://www.A-A-P.org        ///
Karsten Hopp 051fbe
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///