1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-09-02 22:11:54 +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 pc = prog->prog;
wordcode code; wordcode code;
Eprog ret;
if (!prog) if (!prog)
return NULL; return NULL;
@ -3301,16 +3300,33 @@ stripkshdef(Eprog prog, char *name)
*pc != 1 || strcmp(name, ecrawstr(prog, pc + 1))) *pc != 1 || strcmp(name, ecrawstr(prog, pc + 1)))
return prog; return prog;
ret = (Eprog) zhalloc(sizeof(*prog)); {
ret->len = (WC_FUNCDEF_SKIP(code) - 3) * sizeof(wordcode); Eprog ret;
ret->prog = pc + 3; Wordcode end = pc + WC_FUNCDEF_SKIP(code);
ret->strs = (char *) (pc + pc[3]); int nprg = pc[2] - 4;
ret->shf = NULL; int npats = pc[3];
ret->pats = prog->pats; int plen, len, i;
ret->npats = prog->npats; Patprog *pp;
ret->heap = 1;
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 */ /* check to see if AUTOCD applies here */

View file

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

View file

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