diff options
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/ash.c | 13 |
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) { |
