aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--shell/ash.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/shell/ash.c b/shell/ash.c
index c383cccda..389db3cd0 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -8284,7 +8284,10 @@ clearcmdentry(void)
8284 pp = tblp; 8284 pp = tblp;
8285 while ((cmdp = *pp) != NULL) { 8285 while ((cmdp = *pp) != NULL) {
8286 if (cmdp->cmdtype == CMDNORMAL 8286 if (cmdp->cmdtype == CMDNORMAL
8287 || (cmdp->cmdtype == CMDBUILTIN && builtinloc > 0) 8287 || (cmdp->cmdtype == CMDBUILTIN
8288 && !IS_BUILTIN_REGULAR(cmdp->param.cmd)
8289 && builtinloc > 0
8290 )
8288 ) { 8291 ) {
8289 *pp = cmdp->next; 8292 *pp = cmdp->next;
8290 free(cmdp); 8293 free(cmdp);
@@ -8403,7 +8406,11 @@ hashcmd(int argc UNUSED_PARAM, char **argv UNUSED_PARAM)
8403 cmdp = cmdlookup(name, 0); 8406 cmdp = cmdlookup(name, 0);
8404 if (cmdp != NULL 8407 if (cmdp != NULL
8405 && (cmdp->cmdtype == CMDNORMAL 8408 && (cmdp->cmdtype == CMDNORMAL
8406 || (cmdp->cmdtype == CMDBUILTIN && builtinloc >= 0)) 8409 || (cmdp->cmdtype == CMDBUILTIN
8410 && !IS_BUILTIN_REGULAR(cmdp->param.cmd)
8411 && builtinloc > 0
8412 )
8413 )
8407 ) { 8414 ) {
8408 delete_cmd_entry(); 8415 delete_cmd_entry();
8409 } 8416 }
@@ -13556,7 +13563,7 @@ find_command(char *name, struct cmdentry *entry, int act, const char *path)
13556 bit = DO_NOFUNC; 13563 bit = DO_NOFUNC;
13557 break; 13564 break;
13558 case CMDBUILTIN: 13565 case CMDBUILTIN:
13559 bit = DO_ALTBLTIN; 13566 bit = IS_BUILTIN_REGULAR(cmdp->param.cmd) ? 0 : DO_ALTBLTIN;
13560 break; 13567 break;
13561 } 13568 }
13562 if (act & bit) { 13569 if (act & bit) {