From 52b70515bb005f643e6c210fe8778a482ede1f04 Mon Sep 17 00:00:00 2001 From: h_vogt Date: Thu, 6 Jul 2017 16:28:13 +0200 Subject: [PATCH] com_plot.c, plug memory leaks in com_clip() --- src/frontend/com_plot.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/frontend/com_plot.c b/src/frontend/com_plot.c index 77c5f7577..8d903a9f2 100644 --- a/src/frontend/com_plot.c +++ b/src/frontend/com_plot.c @@ -31,17 +31,30 @@ com_bltplot(wordlist *wl) void com_clip(wordlist *wl) { - struct pnode *names; + struct pnode *names, *delnames; struct dvec *vec; double xmin, xmax; char *vecname = wl->wl_word; wl = wl->wl_next; - names = ft_getpnames(wl, TRUE); + delnames = names = ft_getpnames(wl, TRUE); vec = ft_evaluate(names); + if (!vec) { + fprintf(cp_err, "Error: Cannot evaluate xmin for %s.\n No clipping done!\n", vecname); + return; + } xmin = vec->v_realdata[0]; + if (names->pn_value == NULL) + vec_free(vec); names = names->pn_next; vec = ft_evaluate(names); + if (!vec) { + fprintf(cp_err, "Error: Cannot evaluate xmax for %s.\n No clipping done!\n", vecname); + return; + } xmax = vec->v_realdata[0]; + if (names->pn_value == NULL) + vec_free(vec); vec_clip(vecname, xmin, xmax); + free_pnode(delnames); }