use wl_delete_slice()

This commit is contained in:
rlar 2012-07-29 12:40:00 +02:00
parent cdef8aa10e
commit 64b8dfc570
4 changed files with 17 additions and 39 deletions

View File

@ -381,8 +381,7 @@ cp_oddcomm(char *s, wordlist *wl)
if (wl && eq(wl->wl_word, "=")) {
wordlist *ww = wl_cons(copy(s), wl);
com_let(ww);
wl_chop_rest(ww);
wl_free(ww);
wl_delete_slice(ww, ww->wl_next);
return (TRUE);
}

View File

@ -42,7 +42,7 @@ getlims(wordlist *wl, char *name, int number)
if(!beg)
return NULL;
wk = beg;
wk = beg->wl_next;
d = TMALLOC(double, number);
@ -51,8 +51,6 @@ getlims(wordlist *wl, char *name, int number)
char *ss;
double *td;
wk = wk->wl_next;
if (!wk) {
fprintf(cp_err,
"Syntax error: not enough parameters for \"%s\".\n", name);
@ -71,17 +69,11 @@ getlims(wordlist *wl, char *name, int number)
}
d[n] = *td;
wk = wk->wl_next;
}
if (beg->wl_prev)
beg->wl_prev->wl_next = wk->wl_next;
if (wk->wl_next) {
wk->wl_next->wl_prev = beg->wl_prev;
wk->wl_next = NULL;
}
wl_free(beg);
wl_delete_slice(beg, wk);
return d;
}
@ -192,10 +184,7 @@ getflag(wordlist *wl, char *name)
if (!wl)
return FALSE;
if (wl->wl_prev)
wl->wl_prev->wl_next = wl->wl_next;
if (wl->wl_next)
wl->wl_next->wl_prev = wl->wl_prev;
wl_delete_slice(wl, wl->wl_next);
return TRUE;
}
@ -222,11 +211,7 @@ getword(wordlist *wl, char *name)
s = copy(beg->wl_next->wl_word);
beg->wl_prev->wl_next = beg->wl_next->wl_next;
if (beg->wl_next->wl_next)
beg->wl_next->wl_next->wl_prev = beg->wl_prev;
beg->wl_next->wl_next = NULL;
wl_free(beg);
wl_delete_slice(beg, beg->wl_next->wl_next);
return s;
}

View File

@ -55,7 +55,7 @@ cp_redirect(wordlist *wl)
while (w) {
if (*w->wl_word == cp_lt) {
wordlist *bt = w->wl_prev;
wordlist *beg = w;
if (gotinput++) {
fprintf(cp_err, "Error: ambiguous input redirect.\n");
@ -74,6 +74,7 @@ cp_redirect(wordlist *wl)
}
fname = cp_unquote(w->wl_word);
w = w->wl_next;
#ifdef CPDEBUG
if (cp_debug)
@ -84,19 +85,17 @@ cp_redirect(wordlist *wl)
tfree(fname);
if (!fp) {
perror(w->wl_word);
perror(fname);
goto error;
}
cp_in = fp;
w = wl_chop_rest(w);
wl_free(wl_chop_rest(bt));
wl_append(bt, w);
wl_delete_slice(beg, w);
} else if (*w->wl_word == cp_gt) {
wordlist *bt = w->wl_prev;
wordlist *beg = w;
if (gotoutput++) {
fprintf(cp_err, "Error: ambiguous output redirect.\n");
@ -123,6 +122,7 @@ cp_redirect(wordlist *wl)
}
fname = cp_unquote(w->wl_word);
w = w->wl_next;
#ifdef CPDEBUG
if (cp_debug)
@ -139,7 +139,7 @@ cp_redirect(wordlist *wl)
tfree(fname);
if (!fp) {
perror(w->wl_word);
perror(fname);
goto error;
}
@ -149,9 +149,7 @@ cp_redirect(wordlist *wl)
out_isatty = FALSE;
w = wl_chop_rest(w);
wl_free(wl_chop_rest(bt));
wl_append(bt, w);
wl_delete_slice(beg, w);
} else {
w = w->wl_next;
@ -160,7 +158,7 @@ cp_redirect(wordlist *wl)
return (wl);
error:
wl_free(wl);
wl_free(wl); /* FIXME, Ouch !! */
return (NULL);
}

View File

@ -673,11 +673,7 @@ doit(struct line *deck, wordlist *modnames) {
}
#endif
if(modnames != xmodnames) {
wl_chop(xmodnames);
wl_free(modnames);
}
wl_delete_slice(modnames, xmodnames);
wl_free(submod);
if (error)