From 8dd05de4cae8dd5238fd1684653762b31c79dd77 Mon Sep 17 00:00:00 2001 From: rlar Date: Wed, 4 Aug 2010 16:03:23 +0000 Subject: [PATCH] bug fix, segfaults and sickness caused by `plot' --- ChangeLog | 7 +++++++ src/frontend/control.c | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index e188f808a..4a7c4b1aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-08-04 Robert Larice + * src/frontend/control.c : + fix an ancient bug, trampling on freed memory causing segfaults and sickness. + getlims() {a function used by plot} does surgery to a wordlist, + freeing some words. + yet docommand() relied on the wordlist being unmodified. + 2010-08-02 Robert Larice * src/frontend/hpgl.c , * src/frontend/plotting/plot5.c : diff --git a/src/frontend/control.c b/src/frontend/control.c index 424194765..beaa6a066 100644 --- a/src/frontend/control.c +++ b/src/frontend/control.c @@ -239,8 +239,10 @@ docommand(wordlist *wlist) /* Now fix the pointers and advance wlist. */ out: wlist->wl_prev = ee; if (nextc) { - if (nextc->wl_prev) - nextc->wl_prev->wl_next = nextc; + for(wl=wlist; wl->wl_next; wl=wl->wl_next) + ; + wl->wl_next = nextc; + nextc->wl_prev = wl; wlist = nextc->wl_next; } } while (nextc && wlist);