From 137d5b6d563dafb550380f6afe190a2eb50c701c Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Thu, 30 Jul 2020 16:46:16 +0200 Subject: [PATCH] Don't add copied scale vector as new vector, but as new scale vector, thus preventing crash after pushing X11 'Hardcopy' twice or pushing 'quit' after 'Hardcopy'. Scale vector was deleted two times, then crashimg ngsoice. --- src/frontend/plotting/graphdb.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/frontend/plotting/graphdb.c b/src/frontend/plotting/graphdb.c index 82656ea44..4081e80e6 100644 --- a/src/frontend/plotting/graphdb.c +++ b/src/frontend/plotting/graphdb.c @@ -157,11 +157,7 @@ GRAPH *CopyGraph(GRAPH *graph) new_plotdata = newlink; /* put in front */ struct dvec * const new_scale = vec_copy(old_scale); new_scale->v_flags |= VF_PERMANENT; - newlink = TMALLOC(struct dveclist, 1); - newlink->next = new_plotdata; - newlink->f_own_vector = TRUE; - newlink->vector = new_scale; - newlink->next = new_plotdata; + newlink->vector->v_scale = new_scale; } } else { @@ -259,12 +255,13 @@ int DestroyGraph(int id) nextd = d->next; if (d->f_own_vector) { /* list responsible for freeing this vector */ - if (d->vector->v_scale) - dvec_free(d->vector->v_scale); + if (d->vector->v_scale) { + dvec_free(d->vector->v_scale); + } dvec_free(d->vector); } - txfree(d); - d = nextd; + txfree(d); + d = nextd; } }