Browse Source

Applied patches from Charles Williams. The patched code makes error reporting

more verbose. In inperror.c makes use of errMsg.
pre-master-46
pnenzi 25 years ago
parent
commit
e2e71a7e4d
  1. 4
      src/spicelib/analysis/acsetp.c
  2. 6
      src/spicelib/analysis/noisean.c
  3. 15
      src/spicelib/analysis/transetp.c
  4. 5
      src/spicelib/parser/inperror.c

4
src/spicelib/analysis/acsetp.c

@ -21,7 +21,7 @@ ACsetParm(CKTcircuit *ckt, void *anal, int which, IFvalue *value)
case AC_START: case AC_START:
if (value->rValue <= 0.0) { if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid");
errMsg = copy("Frequency of 0 is invalid for AC start");
((ACAN*)anal)->ACstartFreq = 1.0; ((ACAN*)anal)->ACstartFreq = 1.0;
return(E_PARMVAL); return(E_PARMVAL);
} }
@ -31,7 +31,7 @@ ACsetParm(CKTcircuit *ckt, void *anal, int which, IFvalue *value)
case AC_STOP: case AC_STOP:
if (value->rValue <= 0.0) { if (value->rValue <= 0.0) {
errMsg = copy("Frequency of 0 is invalid");
errMsg = copy("Frequency of 0 is invalid for AC stop");
((ACAN*)anal)->ACstartFreq = 1.0; ((ACAN*)anal)->ACstartFreq = 1.0;
return(E_PARMVAL); return(E_PARMVAL);
} }

6
src/spicelib/analysis/noisean.c

@ -34,7 +34,7 @@ NOISEan (CKTcircuit *ckt, int restart)
int code; int code;
int step; int step;
IFuid freqUid; IFuid freqUid;
void *inst; /* PN fixes incompatible pointer type warning */
char *inst;
double freqTol; /* tolerence parameter for finding final frequency; hack */ double freqTol; /* tolerence parameter for finding final frequency; hack */
NOISEAN *job = (NOISEAN*) (ckt->CKTcurJob); NOISEAN *job = (NOISEAN*) (ckt->CKTcurJob);
@ -47,7 +47,7 @@ NOISEan (CKTcircuit *ckt, int restart)
inst = NULL; inst = NULL;
code = CKTtypelook("Vsource"); code = CKTtypelook("Vsource");
if (code != -1) { if (code != -1) {
error = CKTfndDev((void *)ckt,&code,&inst,
error = CKTfndDev((void *)ckt,&code,(void **)&inst,
job->input, (void *)NULL, (IFuid)NULL); job->input, (void *)NULL, (IFuid)NULL);
if (!error && !((VSRCinstance *)inst)->VSRCacGiven) { if (!error && !((VSRCinstance *)inst)->VSRCacGiven) {
errMsg = MALLOC(strlen(noacinput)+1); errMsg = MALLOC(strlen(noacinput)+1);
@ -58,7 +58,7 @@ NOISEan (CKTcircuit *ckt, int restart)
code = CKTtypelook("Isource"); code = CKTtypelook("Isource");
if (code != -1 && inst==NULL) { if (code != -1 && inst==NULL) {
error = CKTfndDev((void *)ckt,&code,&inst,
error = CKTfndDev((void *)ckt,&code, (void **)&inst,
job->input, (void *)NULL,(IFuid)NULL); job->input, (void *)NULL,(IFuid)NULL);
if (error) { if (error) {
/* XXX ??? */ /* XXX ??? */

15
src/spicelib/analysis/transetp.c

@ -19,12 +19,27 @@ TRANsetParm(CKTcircuit *ckt, void *anal, int which, IFvalue *value)
switch(which) { switch(which) {
case TRAN_TSTOP: case TRAN_TSTOP:
if (value->rValue <= 0.0) {
errMsg = copy("TST0P is invalid, must be greater than zero.");
((TRANan *)anal)->TRANfinalTime = 1.0;
return(E_PARMVAL);
}
((TRANan *)anal)->TRANfinalTime = value->rValue; ((TRANan *)anal)->TRANfinalTime = value->rValue;
break; break;
case TRAN_TSTEP: case TRAN_TSTEP:
if (value->rValue <= 0.0) {
errMsg = copy( "TSTEP is invalid, must be greater than zero." );
((TRANan *)anal)->TRANstep = 1.0;
return(E_PARMVAL);
}
((TRANan *)anal)->TRANstep = value->rValue; ((TRANan *)anal)->TRANstep = value->rValue;
break; break;
case TRAN_TSTART: case TRAN_TSTART:
if (value->rValue >= ((TRANan *)anal)->TRANfinalTime ) {
errMsg = copy("TSTART is invalid, must be less than TSTOP.");
((TRANan *)anal)->TRANinitTime = 0.0;
return(E_PARMVAL);
}
((TRANan *)anal)->TRANinitTime = value->rValue; ((TRANan *)anal)->TRANinitTime = value->rValue;
break; break;
case TRAN_TMAX: case TRAN_TMAX:

5
src/spicelib/parser/inperror.c

@ -23,6 +23,11 @@ char *INPerror(int type)
char *val; char *val;
char *ebuf; char *ebuf;
/*CDHW Lots of things set errMsg but it is never used so let's hack it in CDHW*/
if ( errMsg ) {
val = errMsg; errMsg=NULL; }
else
/*CDHW end of hack CDHW*/
val = SPerror(type); val = SPerror(type);
if (!val) if (!val)

Loading…
Cancel
Save