Patch 7.3.344
Problem:    Problem with GUI startup related to XInitThreads.
Solution:   Use read() and write() instead of fputs() and fread(). (James
            Vega)
Files:      src/gui.c


*** ../vim-7.3.343/src/gui.c    2011-09-14 19:04:35.000000000 +0200
--- src/gui.c   2011-10-20 21:23:43.000000000 +0200
***************
*** 212,218 ****
      int               status;
      int               exit_status;
      pid_t     pid = -1;
-     FILE      *parent_file;
  
      /* Setup a pipe between the child and the parent, so that the parent
       * knows when the child has done the setsid() call and is allowed to
--- 212,217 ----
***************
*** 290,308 ****
      gui_mch_forked();
  # endif
  
-     if (!pipe_error)
-       parent_file = fdopen(pipefd[1], "w");
-     else
-       parent_file = NULL;
- 
      /* Try to start the GUI */
      gui_attempt_start();
  
      /* Notify the parent */
!     if (parent_file != NULL)
      {
!       fputs(gui.in_use ? "ok" : "fail", parent_file);
!       fclose(parent_file);
      }
  
      /* If we failed to start the GUI, exit now. */
--- 289,305 ----
      gui_mch_forked();
  # endif
  
      /* Try to start the GUI */
      gui_attempt_start();
  
      /* Notify the parent */
!     if (!pipe_error)
      {
!       if (gui.in_use)
!           write_eintr(pipefd[1], "ok", 3);
!       else
!           write_eintr(pipefd[1], "fail", 5);
!       close(pipefd[1]);
      }
  
      /* If we failed to start the GUI, exit now. */
***************
*** 323,339 ****
      static int
  gui_read_child_pipe(int fd)
  {
!     size_t    bytes_read;
!     FILE      *file;
!     char      buffer[10];
! 
!     file = fdopen(fd, "r");
!     if (!file)
        return GUI_CHILD_IO_ERROR;
! 
!     bytes_read = fread(buffer, sizeof(char), sizeof(buffer)-1, file);
!     buffer[bytes_read] = '\0';
!     fclose(file);
      if (strcmp(buffer, "ok") == 0)
        return GUI_CHILD_OK;
      return GUI_CHILD_FAILED;
--- 320,335 ----
      static int
  gui_read_child_pipe(int fd)
  {
!     long      bytes_read;
! #define READ_BUFFER_SIZE 10
!     char      buffer[READ_BUFFER_SIZE];
! 
!     bytes_read = read_eintr(fd, buffer, READ_BUFFER_SIZE - 1);
! #undef READ_BUFFER_SIZE
!     close(fd);
!     if (bytes_read < 0)
        return GUI_CHILD_IO_ERROR;
!     buffer[bytes_read] = NUL;
      if (strcmp(buffer, "ok") == 0)
        return GUI_CHILD_OK;
      return GUI_CHILD_FAILED;
*** ../vim-7.3.343/src/version.c        2011-10-20 21:09:25.000000000 +0200
--- src/version.c       2011-10-20 21:27:31.000000000 +0200
***************
*** 716,717 ****
--- 716,719 ----
  {   /* Add new patch number below this line */
+ /**/
+     344,
  /**/

-- 
>From "know your smileys":
 *<|:-) Santa Claus (Ho Ho Ho)

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

Raspunde prin e-mail lui