Michael Schröder
b264fccf9e
-> OBS-URL: https://build.opensuse.org/request/show/434537 OBS-URL: https://build.opensuse.org/package/show/shells/ksh?expand=0&rev=215
34 lines
1.1 KiB
Plaintext
34 lines
1.1 KiB
Plaintext
--- ./src/lib/libast/misc/stk.c.orig 2014-11-26 16:01:29.606716557 +0000
|
|
+++ ./src/lib/libast/misc/stk.c 2014-11-26 16:03:06.031328609 +0000
|
|
@@ -505,7 +505,7 @@ static char *stkgrow(register Sfio_t *st
|
|
register char *cp, *dp=0;
|
|
register size_t m = stktell(stream);
|
|
size_t endoff;
|
|
- char *end=0;
|
|
+ char *end=0, *oldbase=0;
|
|
int nn=0,add=1;
|
|
n += (m + sizeof(struct frame)+1);
|
|
if(sp->stkflags&STK_SMALL)
|
|
@@ -521,6 +521,7 @@ static char *stkgrow(register Sfio_t *st
|
|
dp=sp->stkbase;
|
|
sp->stkbase = ((struct frame*)dp)->prev;
|
|
end = fp->end;
|
|
+ oldbase = dp;
|
|
}
|
|
endoff = end - dp;
|
|
cp = newof(dp, char, n, nn*sizeof(char*));
|
|
@@ -547,10 +548,10 @@ static char *stkgrow(register Sfio_t *st
|
|
if(fp->nalias=nn)
|
|
{
|
|
fp->aliases = (char**)fp->end;
|
|
- if(end && nn>1)
|
|
- memmove(fp->aliases,end,(nn-1)*sizeof(char*));
|
|
+ if(end && nn>add)
|
|
+ memmove(fp->aliases,end,(nn-add)*sizeof(char*));
|
|
if(add)
|
|
- fp->aliases[nn-1] = dp + roundof(sizeof(struct frame),STK_ALIGN);
|
|
+ fp->aliases[nn-1] = oldbase + roundof(sizeof(struct frame),STK_ALIGN);
|
|
}
|
|
if(m && !dp)
|
|
{
|