diff --git a/src/frontend/dvec.c b/src/frontend/dvec.c index 76e8e9462..d356294f9 100644 --- a/src/frontend/dvec.c +++ b/src/frontend/dvec.c @@ -40,6 +40,13 @@ dvec_alloc(char *name, int type, short flags, int length, void *storage) } +void +dvec_trunc(struct dvec *v, int length) +{ + v->v_length = length; +} + + void dvec_free(struct dvec *v) { diff --git a/src/frontend/plotting/plotit.c b/src/frontend/plotting/plotit.c index d4adf4f9f..781df50bc 100644 --- a/src/frontend/plotting/plotit.c +++ b/src/frontend/plotting/plotit.c @@ -90,7 +90,7 @@ xtend(struct dvec *v, int length) return; if (v->v_length > length) { - v->v_length = length; + dvec_trunc(v, length); return; } @@ -158,7 +158,7 @@ compress(struct dvec *d, double *xcomp, double *xind) d->v_realdata[i] = d->v_realdata[i * cfac]; else d->v_compdata[i] = d->v_compdata[i * cfac]; - d->v_length = i; + dvec_trunc(d, i); } } } diff --git a/src/frontend/rawfile.c b/src/frontend/rawfile.c index 31ce540ff..34e6d8c9f 100644 --- a/src/frontend/rawfile.c +++ b/src/frontend/rawfile.c @@ -695,7 +695,7 @@ fixdims(struct dvec *v, char *s) ndimpoints *= v->v_dims[i]; if (v->v_length >= ndimpoints) - v->v_length = ndimpoints; + dvec_trunc(v, ndimpoints); else v->v_numdims = 0; } diff --git a/src/include/ngspice/dvec.h b/src/include/ngspice/dvec.h index a5ed619b8..2c4446d9e 100644 --- a/src/include/ngspice/dvec.h +++ b/src/include/ngspice/dvec.h @@ -69,6 +69,7 @@ struct dveclist { }; struct dvec *dvec_alloc(char *name, int type, short flags, int length, void *storage); +void dvec_trunc(struct dvec *v, int length); void dvec_free(struct dvec *); #endif