diff --git a/7.1.288 b/7.1.288
new file mode 100644
index 0000000..63467f2
--- /dev/null
+++ b/7.1.288
@@ -0,0 +1,117 @@
+To: vim-dev@vim.org
+Subject: Patch 7.1.288
+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.288 (after 7.1.281)
+Problem:    Cscope still leaves behind temp files when using gvim.
+Solution:   When getting the ECHILD error loop for a while until cscope exits.
+	    (Dominique Pelle)
+Files:	    if_cscope.c
+
+
+*** ../vim-7.1.287/src/if_cscope.c	Sun Mar 16 16:02:47 2008
+--- src/if_cscope.c	Tue Mar 25 21:34:23 2008
+***************
+*** 2130,2135 ****
+--- 2130,2136 ----
+      }
+  #if defined(UNIX)
+      {
++ 	int waitpid_errno;
+  	int pstat;
+  	pid_t pid;
+  
+***************
+*** 2145,2150 ****
+--- 2146,2152 ----
+  
+  	/* Block until cscope exits or until timer expires */
+  	pid = waitpid(csinfo[i].pid, &pstat, 0);
++ 	waitpid_errno = errno;
+  
+  	/* cancel pending alarm if still there and restore signal */
+  	alarm(0);
+***************
+*** 2158,2163 ****
+--- 2160,2166 ----
+  	for (waited = 0; waited < 40; ++waited)
+  	{
+  	    pid = waitpid(csinfo[i].pid, &pstat, WNOHANG);
++ 	    waitpid_errno = errno;
+  	    if (pid != 0)
+  		break;  /* break unless the process is still running */
+  	    mch_delay(50, FALSE); /* sleep 50 ms */
+***************
+*** 2170,2177 ****
+  	 */
+  	if (pid < 0 && csinfo[i].pid > 1)
+  	{
+! 	    kill(csinfo[i].pid, SIGKILL);
+! 	    (void)waitpid(csinfo[i].pid, &pstat, 0);
+  	}
+      }
+  #else  /* !UNIX */
+--- 2173,2212 ----
+  	 */
+  	if (pid < 0 && csinfo[i].pid > 1)
+  	{
+! # ifdef ECHILD
+! 	    int alive = TRUE;
+! 
+! 	    if (waitpid_errno == ECHILD)
+! 	    {
+! 		/*
+! 		 * When using 'vim -g', vim is forked and cscope process is
+! 		 * no longer a child process but a sibling.  So waitpid()
+! 		 * fails with errno being ECHILD (No child processes).
+! 		 * Don't send SIGKILL to cscope immediately but wait
+! 		 * (polling) for it to exit normally as result of sending
+! 		 * the "q" command, hence giving it a chance to clean up
+! 		 * its temporary files.
+! 		 */
+! 		int waited;
+! 
+! 		sleep(0);
+! 		for (waited = 0; waited < 40; ++waited)
+! 		{
+! 		    /* Check whether cscope process is still alive */
+! 		    if (kill(csinfo[i].pid, 0) != 0)
+! 		    {
+! 			alive = FALSE; /* cscope process no longer exists */
+! 			break;
+! 		    }
+! 		    mch_delay(50, FALSE); /* sleep 50ms */
+! 		}
+! 	    }
+! 	    if (alive)
+! # endif
+! 	    {
+! 		kill(csinfo[i].pid, SIGKILL);
+! 		(void)waitpid(csinfo[i].pid, &pstat, 0);
+! 	    }
+  	}
+      }
+  #else  /* !UNIX */
+*** ../vim-7.1.287/src/version.c	Tue Apr  1 13:10:45 2008
+--- src/version.c	Tue Apr  1 14:28:42 2008
+***************
+*** 668,669 ****
+--- 668,671 ----
+  {   /* Add new patch number below this line */
++ /**/
++     288,
+  /**/
+
+-- 
+hundred-and-one symptoms of being an internet addict:
+204. You're being audited because you mailed your tax return to the IRC.
+
+ /// 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    ///