Commit Diff


commit - 4999080d5b0c41a3aab78414a0329154441d1dce
commit + 783aadbdcd39e3850c61528c77fcf878448824f4
blob - 10923a91cd03e465a076eaf6763842dbf4f4c677
blob + 0ae5a5bb2d14eb1bf23e87d1bc4f6dc7a54922f9
--- src/cmd/acid/proc.c
+++ src/cmd/acid/proc.c
@@ -14,6 +14,7 @@ sproc(int xpid)
 {
 	Lsym *s;
 	int i;
+	Regs *regs;
 
 	if(symmap == 0)
 		error("no map");
@@ -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)
@@ -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);