From 64b8dfc570f81d0ebfdd520c65d6b520d83c912b Mon Sep 17 00:00:00 2001 From: rlar Date: Sun, 29 Jul 2012 12:40:00 +0200 Subject: [PATCH] use wl_delete_slice() --- src/frontend/cpitf.c | 3 +-- src/frontend/plotting/plotit.c | 27 ++++++--------------------- src/frontend/streams.c | 20 +++++++++----------- src/frontend/subckt.c | 6 +----- 4 files changed, 17 insertions(+), 39 deletions(-) diff --git a/src/frontend/cpitf.c b/src/frontend/cpitf.c index 8e70890fe..146d53194 100644 --- a/src/frontend/cpitf.c +++ b/src/frontend/cpitf.c @@ -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); } diff --git a/src/frontend/plotting/plotit.c b/src/frontend/plotting/plotit.c index e45dee0c7..a0c58622d 100644 --- a/src/frontend/plotting/plotit.c +++ b/src/frontend/plotting/plotit.c @@ -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; } diff --git a/src/frontend/streams.c b/src/frontend/streams.c index 82a56c199..26d34beb9 100644 --- a/src/frontend/streams.c +++ b/src/frontend/streams.c @@ -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); } diff --git a/src/frontend/subckt.c b/src/frontend/subckt.c index db1d5b39b..ac68f20c0 100644 --- a/src/frontend/subckt.c +++ b/src/frontend/subckt.c @@ -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)