diff options
Diffstat (limited to 'shell')
| -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 | } |
