control.c, remove memory leaks
This commit is contained in:
parent
c0513ed573
commit
c74ad9b3ee
|
|
@ -276,8 +276,8 @@ static char *
|
|||
doblock(struct control *bl, int *num)
|
||||
{
|
||||
struct control *ch, *cn = NULL;
|
||||
wordlist *wl;
|
||||
char *i;
|
||||
wordlist *wl, *wltmp;
|
||||
char *i, *wlword;
|
||||
int nn;
|
||||
|
||||
nn = *num + 1; /*CDHW this is a guess... CDHW*/
|
||||
|
|
@ -449,9 +449,8 @@ doblock(struct control *bl, int *num)
|
|||
break;
|
||||
|
||||
case CO_FOREACH:
|
||||
for (wl = cp_variablesubst(cp_bquote(cp_doglob(wl_copy(bl->co_text))));
|
||||
wl;
|
||||
wl = wl->wl_next) {
|
||||
wltmp = cp_variablesubst(cp_bquote(cp_doglob(wl_copy(bl->co_text))));
|
||||
for (wl = wltmp; wl; wl = wl->wl_next) {
|
||||
cp_vset(bl->co_foreachvar, CP_STRING, wl->wl_word);
|
||||
for (ch = bl->co_children; ch; ch = cn) {
|
||||
cn = ch->co_next;
|
||||
|
|
@ -463,9 +462,11 @@ doblock(struct control *bl, int *num)
|
|||
|
||||
case BROKEN: /* Break. */
|
||||
if (nn < 2) {
|
||||
wl_free(wltmp);
|
||||
return (NORMAL_STR);
|
||||
} else {
|
||||
*num = nn - 1;
|
||||
wl_free(wltmp);
|
||||
return (BROKEN_STR);
|
||||
}
|
||||
|
||||
|
|
@ -475,16 +476,20 @@ doblock(struct control *bl, int *num)
|
|||
break;
|
||||
} else {
|
||||
*num = nn - 1;
|
||||
wl_free(wltmp);
|
||||
return (CONTINUED_STR);
|
||||
}
|
||||
|
||||
default:
|
||||
cn = findlabel(i, bl->co_children);
|
||||
if (!cn)
|
||||
if (!cn) {
|
||||
wl_free(wltmp);
|
||||
return (i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
wl_free(wltmp);
|
||||
break;
|
||||
|
||||
case CO_BREAK:
|
||||
|
|
@ -508,9 +513,11 @@ doblock(struct control *bl, int *num)
|
|||
}
|
||||
|
||||
case CO_GOTO:
|
||||
wl = cp_variablesubst(cp_bquote(cp_doglob(
|
||||
wl_copy(bl->co_text)))); /*CDHW Leak ? CDHW*/
|
||||
return (wl->wl_word);
|
||||
wl = cp_variablesubst(cp_bquote(cp_doglob(wl_copy(bl->co_text))));
|
||||
wlword = wl->wl_word;
|
||||
wl->wl_word = NULL;
|
||||
wl_free(wl);
|
||||
return (wlword);
|
||||
|
||||
case CO_LABEL:
|
||||
/* Do nothing. */
|
||||
|
|
|
|||
Loading…
Reference in New Issue