diff --git a/7.1.165 b/7.1.165 new file mode 100644 index 0000000..b2e8b30 --- /dev/null +++ b/7.1.165 @@ -0,0 +1,177 @@ +To: vim-dev@vim.org +Subject: Patch 7.1.165 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.165 +Problem: Crash related to getting X window ID. (Dominique Pelle) +Solution: Don't trust the window ID that we got in the past, check it every + time. +Files: src/os_unix.c + + +*** ../vim-7.1.164/src/os_unix.c Thu Aug 30 11:46:46 2007 +--- src/os_unix.c Thu Nov 29 18:19:56 2007 +*************** +*** 310,316 **** + } + + /* +! * mch_inchar(): low level input funcion. + * Get a characters from the keyboard. + * Return the number of characters that are available. + * If wtime == 0 do not wait for characters. +--- 310,316 ---- + } + + /* +! * mch_inchar(): low level input function. + * Get a characters from the keyboard. + * Return the number of characters that are available. + * If wtime == 0 do not wait for characters. +*************** +*** 1567,1584 **** + #ifdef FEAT_XCLIPBOARD + if (xterm_dpy != NULL && x11_window != 0) + { +! /* Checked it already. */ +! if (x11_display_from == XD_XTERM) +! return OK; +! +! /* +! * If the X11 display was opened here before, for the window where Vim +! * was started, close that one now to avoid a memory leak. +! */ +! if (x11_display_from == XD_HERE && x11_display != NULL) +! XCloseDisplay(x11_display); +! x11_display = xterm_dpy; +! x11_display_from = XD_XTERM; + if (test_x11_window(x11_display) == FAIL) + { + /* probably bad $WINDOWID */ +--- 1567,1585 ---- + #ifdef FEAT_XCLIPBOARD + if (xterm_dpy != NULL && x11_window != 0) + { +! /* We may have checked it already, but Gnome terminal can move us to +! * another window, so we need to check every time. */ +! if (x11_display_from != XD_XTERM) +! { +! /* +! * If the X11 display was opened here before, for the window where +! * Vim was started, close that one now to avoid a memory leak. +! */ +! if (x11_display_from == XD_HERE && x11_display != NULL) +! XCloseDisplay(x11_display); +! x11_display = xterm_dpy; +! x11_display_from = XD_XTERM; +! } + if (test_x11_window(x11_display) == FAIL) + { + /* probably bad $WINDOWID */ +*************** +*** 2421,2427 **** + /* + * Set the case of the file name, if it already exists. This will cause the + * file name to remain exactly the same. +! * Only required for file systems where case is ingored and preserved. + */ + /*ARGSUSED*/ + void +--- 2422,2428 ---- + /* + * Set the case of the file name, if it already exists. This will cause the + * file name to remain exactly the same. +! * Only required for file systems where case is ignored and preserved. + */ + /*ARGSUSED*/ + void +*************** +*** 4653,4659 **** + ret = poll(fds, nfd, towait); + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* MzThreads scheduling is required and timeout occured */ + finished = FALSE; + # endif + +--- 4654,4660 ---- + ret = poll(fds, nfd, towait); + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* MzThreads scheduling is required and timeout occurred */ + finished = FALSE; + # endif + +*************** +*** 4801,4807 **** + #endif + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* loop if MzThreads must be scheduled and timeout occured */ + finished = FALSE; + # endif + +--- 4802,4808 ---- + #endif + # ifdef FEAT_MZSCHEME + if (ret == 0 && mzquantum_used) +! /* loop if MzThreads must be scheduled and timeout occurred */ + finished = FALSE; + # endif + +*************** +*** 5191,5197 **** + { + /* When using system() always add extra quotes, because the shell + * is started twice. Otherwise put a backslash before special +! * characters, except insice ``. */ + #ifdef USE_SYSTEM + STRCAT(command, " \""); + STRCAT(command, pat[i]); +--- 5192,5198 ---- + { + /* When using system() always add extra quotes, because the shell + * is started twice. Otherwise put a backslash before special +! * characters, except inside ``. */ + #ifdef USE_SYSTEM + STRCAT(command, " \""); + STRCAT(command, pat[i]); +*************** +*** 5675,5681 **** + /* gpm library tries to handling TSTP causes + * problems. Anyways, we close connection to Gpm whenever + * we are going to suspend or starting an external process +! * so we should'nt have problem with this + */ + signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL); + return 1; /* succeed */ +--- 5676,5682 ---- + /* gpm library tries to handling TSTP causes + * problems. Anyways, we close connection to Gpm whenever + * we are going to suspend or starting an external process +! * so we shouldn't have problem with this + */ + signal(SIGTSTP, restricted ? SIG_IGN : SIG_DFL); + return 1; /* succeed */ +*** ../vim-7.1.164/src/version.c Thu Nov 29 21:26:38 2007 +--- src/version.c Sat Dec 1 17:17:20 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 165, + /**/ + +-- +"Hit any key to continue" is very confusing when you have two keyboards. + + /// 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 ///