tbetter handling of failed setproc - plan9port - [fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port
Log
Files
Refs
README
LICENSE
---
commit 783aadbdcd39e3850c61528c77fcf878448824f4
parent 4999080d5b0c41a3aab78414a0329154441d1dce
Author: rsc 
Date:   Fri, 11 Feb 2005 19:44:37 +0000

better handling of failed setproc

Diffstat:
  M src/cmd/acid/proc.c                 |      11 +++++++----

1 file changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/src/cmd/acid/proc.c b/src/cmd/acid/proc.c
t@@ -14,6 +14,7 @@ sproc(int xpid)
 {
         Lsym *s;
         int i;
+        Regs *regs;
 
         if(symmap == 0)
                 error("no map");
t@@ -22,11 +23,11 @@ sproc(int xpid)
                 return;
 
         if(corhdr){
-                free(correg);
-                correg = nil;
-                correg = coreregs(corhdr, xpid);
-                if(correg == nil)
+                regs = coreregs(corhdr, xpid);
+                if(regs == nil)
                         error("no such pid in core dump");
+                free(correg);
+                correg = regs;
         }else{
                 /* XXX should only change register set here if cormap already mapped */                
                 if(xpid <= 0)
t@@ -35,6 +36,8 @@ sproc(int xpid)
                 unmapfile(corhdr, cormap);
                 free(correg);
                 correg = nil;
+                pid = -1;
+                corpid = -1;
 
                 if(mapproc(xpid, cormap, &correg) < 0)
                         error("setproc %d: %r", xpid);