Browse Source

Fix bug #680. Check that src/dest memcpy arguments are non-NULL.

pre-master-46
Brian Taylor 2 years ago
committed by Holger Vogt
parent
commit
3528156d14
  1. 1
      src/maths/ni/niiter.c
  2. 4
      src/spicelib/analysis/dctran.c
  3. 2
      src/spicelib/analysis/dctrcurv.c

1
src/maths/ni/niiter.c

@ -246,6 +246,7 @@ NIiter(CKTcircuit *ckt, int maxIter)
CKTnumStates the first time it is run */
if (!OldCKTstate0)
OldCKTstate0 = TMALLOC(double, ckt->CKTnumStates + 1);
if (ckt->CKTstate0)
memcpy(OldCKTstate0, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));

4
src/spicelib/analysis/dctran.c

@ -341,8 +341,10 @@ DCtran(CKTcircuit *ckt,
ckt->CKTmode = (ckt->CKTmode&MODEUIC) | MODETRAN | MODEINITTRAN;
/* modeinittran set here */
ckt->CKTag[0]=ckt->CKTag[1]=0;
if (ckt->CKTstate1 && ckt->CKTstate0) {
memcpy(ckt->CKTstate1, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
}
#ifdef WANT_SENSE2
if(ckt->CKTsenInfo && (ckt->CKTsenInfo->SENmode & TRANSEN)){
@ -790,7 +792,7 @@ resume:
ckt->CKTstat->STATtimePts ++;
ckt->CKTmode = (ckt->CKTmode&MODEUIC)|MODETRAN | MODEINITPRED;
if(firsttime) {
if(firsttime && ckt->CKTstate1 && ckt->CKTstate2 && ckt->CKTstate3) {
memcpy(ckt->CKTstate2, ckt->CKTstate1,
(size_t) ckt->CKTnumStates * sizeof(double));
memcpy(ckt->CKTstate3, ckt->CKTstate1,

2
src/spicelib/analysis/dctrcurv.c

@ -456,9 +456,11 @@ DCtrCurv(CKTcircuit *ckt, int restart)
if (firstTime) {
firstTime = 0;
if (ckt->CKTstate1 && ckt->CKTstate0) {
memcpy(ckt->CKTstate1, ckt->CKTstate0,
(size_t) ckt->CKTnumStates * sizeof(double));
}
}
i = 0;

Loading…
Cancel
Save