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