diff options
-rw-r--r-- | shell/ash.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/shell/ash.c b/shell/ash.c index 9d55f892e..ec5e0b8c7 100644 --- a/shell/ash.c +++ b/shell/ash.c | |||
@@ -5425,7 +5425,11 @@ rmescapes(char *str, int flag) | |||
5425 | size_t fulllen = len + strlen(p) + 1; | 5425 | size_t fulllen = len + strlen(p) + 1; |
5426 | 5426 | ||
5427 | if (flag & RMESCAPE_GROW) { | 5427 | if (flag & RMESCAPE_GROW) { |
5428 | int strloc = str - (char *)stackblock(); | ||
5428 | r = makestrspace(fulllen, expdest); | 5429 | r = makestrspace(fulllen, expdest); |
5430 | /* p and str may be invalidated by makestrspace */ | ||
5431 | str = (char *)stackblock() + strloc; | ||
5432 | p = str + len; | ||
5429 | } else if (flag & RMESCAPE_HEAP) { | 5433 | } else if (flag & RMESCAPE_HEAP) { |
5430 | r = ckmalloc(fulllen); | 5434 | r = ckmalloc(fulllen); |
5431 | } else { | 5435 | } else { |