diff options
-rw-r--r-- | shell/ash.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/shell/ash.c b/shell/ash.c index 340c7ce2f..94aabbc4c 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -16791,7 +16791,8 @@ argv_size(struct datasize ds, char **p) | |||
16791 | ds.funcstringsize += align_len(*p); | 16791 | ds.funcstringsize += align_len(*p); |
16792 | p++; | 16792 | p++; |
16793 | } | 16793 | } |
16794 | ds.funcblocksize += sizeof(char *); | 16794 | // Allow for argv[-1] used by tryexec(). |
16795 | ds.funcblocksize += 2 * sizeof(char *); | ||
16795 | } | 16796 | } |
16796 | return ds; | 16797 | return ds; |
16797 | } | 16798 | } |
@@ -16805,6 +16806,8 @@ argv_copy(char **p) | |||
16805 | #endif | 16806 | #endif |
16806 | 16807 | ||
16807 | if (p) { | 16808 | if (p) { |
16809 | // argv[-1] for tryexec() | ||
16810 | funcblock = (char *) funcblock + sizeof(char *); | ||
16808 | while (*p) { | 16811 | while (*p) { |
16809 | new = funcblock; | 16812 | new = funcblock; |
16810 | funcblock = (char *) funcblock + sizeof(char *); | 16813 | funcblock = (char *) funcblock + sizeof(char *); |
@@ -16815,7 +16818,7 @@ argv_copy(char **p) | |||
16815 | new = funcblock; | 16818 | new = funcblock; |
16816 | funcblock = (char *) funcblock + sizeof(char *); | 16819 | funcblock = (char *) funcblock + sizeof(char *); |
16817 | *new = NULL; | 16820 | *new = NULL; |
16818 | return start; | 16821 | return start + 1; |
16819 | } | 16822 | } |
16820 | return NULL; | 16823 | return NULL; |
16821 | } | 16824 | } |