Loading ...
Sorry, an error occurred while loading the content.

Patch 7.3.499

Expand Messages
  • Bram Moolenaar
    Patch 7.3.499 Problem: When using any interface language when Vim is waiting for a child process it gets confused by a child process started through the
    Message 1 of 1 , Apr 20, 2012
    • 0 Attachment
      Patch 7.3.499
      Problem: When using any interface language when Vim is waiting for a child
      process it gets confused by a child process started through the
      interface.
      Solution: Always used waitpid() instead of wait(). (Yasuhiro Matsumoto)
      Files: src/os_unix.c


      *** ../vim-7.3.498/src/os_unix.c 2012-02-05 22:51:27.000000000 +0100
      --- src/os_unix.c 2012-04-20 15:47:17.000000000 +0200
      ***************
      *** 3734,3757 ****

      while (wait_pid != child)
      {
      ! # ifdef _THREAD_SAFE
      ! /* Ugly hack: when compiled with Python threads are probably
      ! * used, in which case wait() sometimes hangs for no obvious
      ! * reason. Use waitpid() instead and loop (like the GUI). */
      ! # ifdef __NeXT__
      wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
      ! # else
      wait_pid = waitpid(child, status, WNOHANG);
      ! # endif
      if (wait_pid == 0)
      {
      /* Wait for 1/100 sec before trying again. */
      mch_delay(10L, TRUE);
      continue;
      }
      - # else
      - wait_pid = wait(status);
      - # endif
      if (wait_pid <= 0
      # ifdef ECHILD
      && errno == ECHILD
      --- 3734,3754 ----

      while (wait_pid != child)
      {
      ! /* When compiled with Python threads are probably used, in which case
      ! * wait() sometimes hangs for no obvious reason. Use waitpid()
      ! * instead and loop (like the GUI). Also needed for other interfaces,
      ! * they might call system(). */
      ! # ifdef __NeXT__
      wait_pid = wait4(child, status, WNOHANG, (struct rusage *)0);
      ! # else
      wait_pid = waitpid(child, status, WNOHANG);
      ! # endif
      if (wait_pid == 0)
      {
      /* Wait for 1/100 sec before trying again. */
      mch_delay(10L, TRUE);
      continue;
      }
      if (wait_pid <= 0
      # ifdef ECHILD
      && errno == ECHILD
      *** ../vim-7.3.498/src/version.c 2012-04-20 13:46:02.000000000 +0200
      --- src/version.c 2012-04-20 15:54:05.000000000 +0200
      ***************
      *** 716,717 ****
      --- 716,719 ----
      { /* Add new patch number below this line */
      + /**/
      + 499,
      /**/

      --
      It's not hard to meet expenses, they're everywhere.

      /// Bram Moolenaar -- Bram@... -- 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
    Your message has been successfully submitted and would be delivered to recipients shortly.