OSDN Git Service

* pinfo.h (pinfo::remember): Arrange for destructor call if proc_subproc
authorcgf <cgf>
Mon, 19 Aug 2002 14:59:27 +0000 (14:59 +0000)
committercgf <cgf>
Mon, 19 Aug 2002 14:59:27 +0000 (14:59 +0000)
returns error.
* sigproc.cc (zombies): Store 1 + total zombies since proc_subproc uses
NZOMBIES element.

winsup/cygwin/ChangeLog
winsup/cygwin/pinfo.h
winsup/cygwin/sigproc.cc

index b79a00d..315ac08 100644 (file)
@@ -1,3 +1,10 @@
+2002-08-19  Christopher Faylor  <cgf@redhat.com>
+
+       * pinfo.h (pinfo::remember): Arrange for destructor call if
+       proc_subproc returns error.
+       * sigproc.cc (zombies): Store 1 + total zombies since proc_subproc uses
+       NZOMBIES element.
+
 2002-08-19  Corinna Vinschen  <corinna@vinschen.de>
 
        * pwdgrp.h (pwdgrp_read::pwdgrp_read): Remove.
index 8a090cf..dcb814b 100644 (file)
@@ -131,7 +131,7 @@ class pinfo
 {
   HANDLE h;
   _pinfo *procinfo;
-  int destroy;
+  bool destroy;
 public:
   void init (pid_t n, DWORD create = 0, HANDLE h = NULL) __attribute__ ((regparm(3)));
   pinfo () {}
@@ -154,10 +154,15 @@ public:
   _pinfo *operator * () const {return procinfo;}
   operator _pinfo * () const {return procinfo;}
   // operator bool () const {return (int) h;}
-#ifdef _SIGPROC_H
-  int remember () {destroy = 0; return proc_subproc (PROC_ADDCHILD, (DWORD) this);}
-#else
+#ifndef _SIGPROC_H
   int remember () {system_printf ("remember is not here"); return 0;}
+#else
+  int remember ()
+  {
+    int res = proc_subproc (PROC_ADDCHILD, (DWORD) this);
+    destroy = res ? false : true;
+    return res;
+  }
 #endif
   HANDLE shared_handle () {return h;}
 };
index b43057e..8509ff8 100644 (file)
@@ -107,7 +107,7 @@ Static HANDLE events[PSIZE + 1];      // All my children's handles++
 #define hchildren (events + 1)         // Where the children handles begin
 Static char cpchildren[PSIZE * sizeof (pinfo)];                // All my children info
 Static int nchildren;                  // Number of active children
-Static char czombies[NZOMBIES * sizeof (pinfo)];               // All my deceased children info
+Static char czombies[(NZOMBIES + 1) * sizeof (pinfo)];         // All my deceased children info
 Static int nzombies;                   // Number of deceased children
 
 #define pchildren ((pinfo *) cpchildren)