diff options
-rw-r--r-- | libc/unistd/exec.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libc/unistd/exec.c b/libc/unistd/exec.c index 47aab27e7..b2817af5e 100644 --- a/libc/unistd/exec.c +++ b/libc/unistd/exec.c @@ -235,11 +235,11 @@ int execvp(const char *path, char *const argv[]) if (strchr(path, '/')) { execve(path, argv, __environ); - CHECK_ENOEXEC: if (errno == ENOEXEC) { char **nargv; EXEC_ALLOC_SIZE(size2) /* Do NOT add a semicolon! */ size_t n; + RUN_BIN_SH: /* Need the dimension - 1. We omit counting the trailing * NULL but we actually omit the first entry. */ for (n=0 ; argv[n] ; n++) {} @@ -292,9 +292,9 @@ int execvp(const char *path, char *const argv[]) seen_small = 1; - if (errno != ENOENT) { + if (errno == ENOEXEC) { path = s; - goto CHECK_ENOEXEC; + goto RUN_BIN_SH; } NEXT: |