diff --git a/7.1.243 b/7.1.243
new file mode 100644
index 0000000..102546c
--- /dev/null
+++ b/7.1.243
@@ -0,0 +1,165 @@
+To: vim-dev@vim.org
+Subject: Patch 7.1.243
+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.1.243 (after 7.1.240)
+Problem:    "U" doesn't work on all text in Visual mode. (Adri Verhoef)
+Solution:   Loop over all the lines to be changed.  Add tests for this.
+Files:	    src/ops.c, src/testdir/test39.in, src/testdir/test39.ok
+
+
+*** ../vim-7.1.242/src/ops.c	Tue Jan 22 16:01:25 2008
+--- src/ops.c	Mon Feb  4 22:23:22 2008
+***************
+*** 2197,2203 ****
+  #ifdef FEAT_VISUAL
+      struct block_def	bd;
+  #endif
+!     int			did_change;
+  
+      if (u_save((linenr_T)(oap->start.lnum - 1),
+  				       (linenr_T)(oap->end.lnum + 1)) == FAIL)
+--- 2197,2203 ----
+  #ifdef FEAT_VISUAL
+      struct block_def	bd;
+  #endif
+!     int			did_change = FALSE;
+  
+      if (u_save((linenr_T)(oap->start.lnum - 1),
+  				       (linenr_T)(oap->end.lnum + 1)) == FAIL)
+***************
+*** 2242,2248 ****
+  	else if (!oap->inclusive)
+  	    dec(&(oap->end));
+  
+! 	did_change = swapchars(oap->op_type, &pos, oap->end.col - pos.col + 1);
+  	if (did_change)
+  	{
+  	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
+--- 2242,2259 ----
+  	else if (!oap->inclusive)
+  	    dec(&(oap->end));
+  
+! 	if (pos.lnum == oap->end.lnum)
+! 	    did_change = swapchars(oap->op_type, &pos,
+! 						  oap->end.col - pos.col + 1);
+! 	else
+! 	    for (;;)
+! 	    {
+! 		did_change |= swapchars(oap->op_type, &pos,
+! 				pos.lnum == oap->end.lnum ? oap->end.col + 1:
+! 					   (int)STRLEN(ml_get_pos(&pos)));
+! 		if (ltoreq(oap->end, pos) || inc(&pos) == -1)
+! 		    break;
+! 	    }
+  	if (did_change)
+  	{
+  	    changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,
+***************
+*** 2314,2330 ****
+      for (todo = length; todo > 0; --todo)
+      {
+  # ifdef FEAT_MBYTE
+- 	int pos_col = pos->col;
+- 
+  	if (has_mbyte)
+  	    /* we're counting bytes, not characters */
+  	    todo -= (*mb_ptr2len)(ml_get_pos(pos)) - 1;
+  # endif
+  	did_change |= swapchar(op_type, pos);
+- # ifdef FEAT_MBYTE
+- 	/* Changing German sharp s to SS increases the column. */
+- 	todo += pos->col - pos_col;
+- # endif
+  	if (inc(pos) == -1)    /* at end of file */
+  	    break;
+      }
+--- 2325,2335 ----
+*** ../vim-7.1.242/src/testdir/test39.in	Sun Jun 13 18:21:09 2004
+--- src/testdir/test39.in	Wed Feb  6 13:57:37 2008
+***************
+*** 1,8 ****
+--- 1,10 ----
+  
+  Test Visual block mode commands
++ And test "U" in Visual mode, also on German sharp S.
+  
+  STARTTEST
+  :so small.vim
++ :so mbyte.vim
+  /^abcde
+  :" Test shift-right of a block
+  jlllljj>wlljlll>
+***************
+*** 14,20 ****
+  Gllllkkklllrq
+  :" Test block-change
+  G$khhhhhkkcmno
+! :$-4,$wq! test.out
+  ENDTEST
+  
+  abcdefghijklm
+--- 16,37 ----
+  Gllllkkklllrq
+  :" Test block-change
+  G$khhhhhkkcmno
+! :$-4,$w! test.out
+! :" gUe must uppercase a whole word, also when � changes to SS
+! Gothe youtu�euu endYpk0wgUe
+! :" gUfx must uppercase until x, inclusive.
+! O- you�tu�exu -0fogUfx
+! :" VU must uppercase a whole line
+! YpkVU
+! :" same, when it's the last line in the buffer
+! YPGi111VUddP
+! :" Uppercase two lines
+! Oblah di
+! doh dutVkUj
+! :" Uppercase part of two lines
+! ddppi333k0i222fyllvjfuUk
+! :/^the/,$w >> test.out
+! :qa!
+  ENDTEST
+  
+  abcdefghijklm
+*** ../vim-7.1.242/src/testdir/test39.ok	Sun Jun 13 18:59:28 2004
+--- src/testdir/test39.ok	Tue Feb  5 22:25:38 2008
+***************
+*** 3,5 ****
+--- 3,13 ----
+  axyzqqqqef mno        ghijklm
+  axyzqqqqefgmnoklm
+  abcdqqqqijklm
++ the YOUTUSSEUU end
++ - yOUSSTUSSEXu -
++ THE YOUTUSSEUU END
++ 111THE YOUTUSSEUU END
++ BLAH DI
++ DOH DUT
++ 222the yoUTUSSEUU END
++ 333THE YOUTU�euu end
+*** ../vim-7.1.242/src/version.c	Sat Jan 26 21:15:00 2008
+--- src/version.c	Wed Feb  6 14:41:00 2008
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     243,
+  /**/
+
+-- 
+It's totally unfair to suggest - as many have - that engineers are socially
+inept.  Engineers simply have different objectives when it comes to social
+interaction.
+				(Scott Adams - The Dilbert principle)
+
+ /// 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    ///
diff --git a/7.1.244 b/7.1.244
new file mode 100644
index 0000000..6c4c43f
--- /dev/null
+++ b/7.1.244
@@ -0,0 +1,58 @@
+To: vim-dev@vim.org
+Subject: Patch 7.1.244
+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.1.244
+Problem:    GUI may have part of the command line cut off.
+Solution:   Don't round the number of lines up, always round down.
+	    (Tony Houghton, Scott Dillard)
+Files:	    src/gui.c
+
+
+*** ../vim-7.1.243/src/gui.c	Sat Jan 19 15:55:51 2008
+--- src/gui.c	Wed Feb  6 16:43:44 2008
+***************
+*** 1294,1304 ****
+      out_flush();
+  
+      gui.num_cols = (pixel_width - gui_get_base_width()) / gui.char_width;
+!     gui.num_rows = (pixel_height - gui_get_base_height()
+! #if !defined(FEAT_GUI_PHOTON) && !defined(FEAT_GUI_MSWIN)
+! 				    + (gui.char_height / 2)
+! #endif
+! 					) / gui.char_height;
+  
+      gui_position_components(pixel_width);
+  
+--- 1294,1300 ----
+      out_flush();
+  
+      gui.num_cols = (pixel_width - gui_get_base_width()) / gui.char_width;
+!     gui.num_rows = (pixel_height - gui_get_base_height()) / gui.char_height;
+  
+      gui_position_components(pixel_width);
+  
+*** ../vim-7.1.243/src/version.c	Wed Feb  6 14:43:50 2008
+--- src/version.c	Wed Feb  6 17:32:35 2008
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     244,
+  /**/
+
+-- 
+A consultant is a person who takes your money and annoys your employees while
+tirelessly searching for the best way to extend the consulting contract.
+				(Scott Adams - The Dilbert principle)
+
+ /// 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    ///
diff --git a/7.1.245 b/7.1.245
new file mode 100644
index 0000000..ce7a7b5
--- /dev/null
+++ b/7.1.245
@@ -0,0 +1,92 @@
+To: vim-dev@vim.org
+Subject: Patch 7.1.245
+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.1.245
+Problem:    Pressing CTRL-\ three times causes Vim to quit.  (Ranganath Rao).
+	    Also for f CTRL-\ CTRL-\.
+Solution:   When going to cooked mode in mch_delay() set a flag to ignore
+	    SIGQUIT.
+Files:	    src/os_unix.c
+
+
+*** ../vim-7.1.244/src/os_unix.c	Sun Jan 13 16:30:23 2008
+--- src/os_unix.c	Sun Feb 10 22:07:27 2008
+***************
+*** 195,200 ****
+--- 195,201 ----
+  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 */
+  
+***************
+*** 538,544 ****
+      if (ignoreinput)
+      {
+  	/* Go to cooked mode without echo, to allow SIGINT interrupting us
+! 	 * here */
+  	old_tmode = curr_tmode;
+  	if (curr_tmode == TMODE_RAW)
+  	    settmode(TMODE_SLEEP);
+--- 539,547 ----
+      if (ignoreinput)
+      {
+  	/* Go to cooked mode without echo, to allow SIGINT interrupting us
+! 	 * here.  But we don't want QUIT to kill us (CTRL-\ used in a
+! 	 * shell may produce SIGQUIT). */
+! 	in_mch_delay = TRUE;
+  	old_tmode = curr_tmode;
+  	if (curr_tmode == TMODE_RAW)
+  	    settmode(TMODE_SLEEP);
+***************
+*** 602,607 ****
+--- 605,611 ----
+  #endif
+  
+  	settmode(old_tmode);
++ 	in_mch_delay = FALSE;
+      }
+      else
+  	WaitForChar(msec);
+***************
+*** 922,927 ****
+--- 926,939 ----
+  #endif
+  
+  #ifdef SIGHASARG
++ # ifdef SIGQUIT
++     /* While in mch_delay() we go to cooked mode to allow a CTRL-C to
++      * interrupt us.  But in cooked mode we may also get SIGQUIT, e.g., when
++      * pressing CTRL-\, but we don't want Vim to exit then. */
++     if (in_mch_delay && sigarg == SIGQUIT)
++ 	SIGRETURN;
++ # endif
++ 
+      /* When SIGHUP, SIGQUIT, etc. are blocked: postpone the effect and return
+       * here.  This avoids that a non-reentrant function is interrupted, e.g.,
+       * free().  Calling free() again may then cause a crash. */
+*** ../vim-7.1.244/src/version.c	Wed Feb  6 17:33:19 2008
+--- src/version.c	Sun Feb 10 22:04:09 2008
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     245,
+  /**/
+
+-- 
+Me?  A skeptic?  I trust you have proof.
+
+ /// 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    ///
diff --git a/README.patches b/README.patches
index 636bcd0..159f3bb 100644
--- a/README.patches
+++ b/README.patches
@@ -107,6 +107,7 @@ Individual patches for Vim 7.1:
   5259  7.1.074  crash when using string() on a recursively nested List
   1686  7.1.075  ":let v:statusmsg" reads memory already freed
   2376  7.1.076  a couple more strcpy() with overlapping arguments
+  1551  7.1.077  "can_spell" is used without initializing it
   2678  7.1.078  dropping file name on gvim containing CSI byte doesn't work
   2922  7.1.079  "@" character in 'isfname' doesn't pick up umlauts for latin1
   2960  7.1.080  (extra) Compiler warnings for gvimex.cpp
@@ -273,3 +274,6 @@ Individual patches for Vim 7.1:
   5157  7.1.240  "gUe" may stop before the end of the word
   3093  7.1.241  focus change events not always ignored
   2262  7.1.242  "cib" doesn't work properly on "(x)"
+  4475  7.1.243  (after 7.1.240) "U" doesn't work on all text in Visual mode
+  1847  7.1.244  GUI may have part of the command line cut off
+  2767  7.1.245  pressing CTRL-\ three times causes Vim to quit
diff --git a/vim.spec b/vim.spec
index 467b292..62900a3 100644
--- a/vim.spec
+++ b/vim.spec
@@ -17,7 +17,7 @@
 #used for pre-releases:
 %define beta %{nil}
 %define vimdir vim71%{?beta}
-%define patchlevel 242
+%define patchlevel 245
 
 Summary: The VIM editor
 URL:     http://www.vim.org/
@@ -1058,6 +1058,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_datadir}/icons/hicolor/*/apps/*
 
 %changelog
+* Mon Feb 11 2008 Karsten Hopp <karsten@redhat.com> 7.1.245-1
+- patchlevel 245
+
 * Sun Jan 27 2008 Karsten Hopp <karsten@redhat.com> 7.1.242-1
 - patchlevel 242