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

Patch 5.6a.026

Expand Messages
  • Bram Moolenaar
    Patch 5.6a.026 Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer) Solution: Skip a second wait() call if waitpid() already
    Message 1 of 1 , Jan 14, 2000
    • 0 Attachment
      Patch 5.6a.026
      Problem: When the SNiFF connection is open, shell commands hang. (Pruemmer)
      Solution: Skip a second wait() call if waitpid() already detected that the
      child has exited.
      Files: src/os_unix.c


      *** ../vim-5.6a.25/src/os_unix.c Mon Dec 20 09:59:13 1999
      --- src/os_unix.c Fri Jan 14 22:27:22 2000
      ***************
      *** 2171,2177 ****

      char_u *newcmd = NULL;
      pid_t pid;
      ! pid_t wait_pid;
      #ifdef HAVE_UNION_WAIT
      union wait status;
      #else
      --- 2171,2177 ----

      char_u *newcmd = NULL;
      pid_t pid;
      ! pid_t wait_pid = 0;
      #ifdef HAVE_UNION_WAIT
      union wait status;
      #else
      ***************
      *** 2631,2637 ****
      --- 2631,2641 ----
      #endif
      if ((wait_pid == (pid_t)-1 && errno == ECHILD)
      || (wait_pid == pid && WIFEXITED(status)))
      + {
      + wait_pid = pid;
      break;
      + }
      + wait_pid = 0;
      }
      finished:
      p_more = p_more_save;
      ***************
      *** 2653,2664 ****
      * Wait until our child has exited.
      * Ignore wait() returning pids of other children and returning
      * because of some signal like SIGWINCH.
      */
      ! for (;;)
      {
      wait_pid = wait(&status);
      - if (wait_pid == pid)
      - break;
      if (wait_pid <= 0
      #ifdef ECHILD
      && errno == ECHILD
      --- 2657,2668 ----
      * Wait until our child has exited.
      * Ignore wait() returning pids of other children and returning
      * because of some signal like SIGWINCH.
      + * Don't wait if wait_pid was already set above, indicating the
      + * child already exited.
      */
      ! while (wait_pid != pid)
      {
      wait_pid = wait(&status);
      if (wait_pid <= 0
      #ifdef ECHILD
      && errno == ECHILD
      *** ../vim-5.6a.25/src/version.c Thu Jan 13 23:05:21 2000
      --- src/version.c Fri Jan 14 22:24:09 2000
      ***************
      *** 420,421 ****
      --- 420,423 ----
      { /* Add new patch number below this line */
      + /**/
      + 26,
      /**/

      --
      hundred-and-one symptoms of being an internet addict:
      173. You keep tracking down the email addresses of all your friends
      (even childhood friends).

      --/-/---- Bram Moolenaar ---- Bram@... ---- Bram@... ---\-\--
      \ \ www.vim.org/iccf www.moolenaar.net www.vim.org / /
    Your message has been successfully submitted and would be delivered to recipients shortly.