1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-01 09:41:44 +02:00

zsh-workers/9395

This commit is contained in:
Tanaka Akira 2000-01-21 10:07:35 +00:00
parent 8750814108
commit 09a9a37aac
3 changed files with 29 additions and 11 deletions

View file

@ -3281,7 +3281,6 @@ stripkshdef(Eprog prog, char *name)
{
Wordcode pc = prog->prog;
wordcode code;
Eprog ret;
if (!prog)
return NULL;
@ -3301,16 +3300,33 @@ stripkshdef(Eprog prog, char *name)
*pc != 1 || strcmp(name, ecrawstr(prog, pc + 1)))
return prog;
ret = (Eprog) zhalloc(sizeof(*prog));
ret->len = (WC_FUNCDEF_SKIP(code) - 3) * sizeof(wordcode);
ret->prog = pc + 3;
ret->strs = (char *) (pc + pc[3]);
ret->shf = NULL;
ret->pats = prog->pats;
ret->npats = prog->npats;
ret->heap = 1;
{
Eprog ret;
Wordcode end = pc + WC_FUNCDEF_SKIP(code);
int nprg = pc[2] - 4;
int npats = pc[3];
int plen, len, i;
Patprog *pp;
return ret;
pc += 4;
plen = (end - pc) * sizeof(wordcode);
len = plen + (npats * sizeof(Patprog));
ret = (Eprog) zhalloc(sizeof(*ret));
ret->heap = 1;
ret->len = len;
ret->npats = npats;
ret->pats = pp = (Patprog *) zhalloc(len);
ret->prog = (Wordcode) (ret->pats + npats);
for (i = npats; i--; pp++)
*pp = dummy_patprog1;
memcpy(ret->prog, pc, plen);
ret->strs = (char *) (ret->prog + nprg);
ret->shf = NULL;
return ret;
}
}
/* check to see if AUTOCD applies here */

View file

@ -2467,10 +2467,11 @@ ecgetarr(Estate s, int num, int dup)
{
char **ret, **rp;
ret = rp = (char **) zhalloc(num * sizeof(char *));
ret = rp = (char **) zhalloc((num + 1) * sizeof(char *));
while (num--)
*rp++ = ecgetstr(s, dup);
*rp = NULL;
return ret;
}

View file

@ -636,6 +636,7 @@ gettext2(Estate state)
break;
case COND_MOD:
taddstr(ecgetstr(state, 0));
taddchr(' ');
taddlist(state, WC_COND_SKIP(code));
stack = 1;
break;