Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: PATCH: fix for SEGV
- X-seq: zsh-workers 7521
 
- From: "Bart Schaefer" <schaefer@xxxxxxxxxxxxxxxxxxxxxxx>
 
- To: zsh-workers@xxxxxxxxxxxxxx
 
- Subject: Re: PATCH: fix for SEGV
 
- Date: Fri, 27 Aug 1999 16:04:05 +0000
 
- In-reply-to: <199908260716.JAA14633@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
 
- Mailing-list: contact zsh-workers-help@xxxxxxxxxxxxxx; run by ezmlm
 
- References: <199908260716.JAA14633@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
 
On Aug 26,  9:16am, Sven Wischnowsky wrote:
} Subject: Re: PATCH: fix for SEGV
}
} Bart Schaefer wrote:
} 
} > On Aug 24,  2:16pm, Sven Wischnowsky wrote:
} > } Subject: PATCH: fix for SEGV
} > } 
} > } +    if (cn->flags & HASHED)
} > } +	return 1;
} > 
} > Is that really the right fix?
} 
} I wasn't sure either and was hoping for a reply. isreallycom() is used
} only in one place, so we could easily move the extra test there.
} 
} -	    if (hn && trycd && !isreallycom((Cmdnam)hn)) {
} +	    if (hn && trycd && !(((Cmdnam)hn)->flags & HASHED) &&
} +		!isreallycom((Cmdnam)hn)) {
Actually, I was rather thinking more of something like this (which goes
on top of 7490, which went on top of 7472):
Index: exec.c
===================================================================
@@ -617,9 +617,15 @@
 {
     char fullnam[MAXCMDLEN];
 
-    strcpy(fullnam, cn->u.name ? *(cn->u.name) : "");
-    strcat(fullnam, "/");
-    strcat(fullnam, cn->nam);
+    if (cn->flags & HASHED)
+	strcpy(fullnam, cn->u.cmd);
+    else if (!cn->u.name)
+	return 0;
+    else {
+	strcpy(fullnam, cn->u.name);
+	strcat(fullnam, "/");
+	strcat(fullnam, cn->nam);
+    }
     return iscom(fullnam);
 }
 
@@ -1685,8 +1691,7 @@
 	    char *cmdarg = (char *) peekfirst(args);
 
 	    hn = cmdnamtab->getnode(cmdnamtab, cmdarg);
-	    if (hn && trycd && !(((Cmdnam)hn)->flags & HASHED) &&
-		!isreallycom((Cmdnam)hn)) {
+	    if (hn && trycd && !isreallycom((Cmdnam)hn)) {
 		cmdnamtab->removenode(cmdnamtab, cmdarg);
 		cmdnamtab->freenode(hn);
 		hn = NULL;
-- 
Bart Schaefer                                 Brass Lantern Enterprises
http://www.well.com/user/barts              http://www.brasslantern.com
Messages sorted by:
Reverse Date,
Date,
Thread,
Author