diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index 18f79abe4..55c84e0bb 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -8654,8 +8654,14 @@ static void inp_check_syntax(struct card *deck) bool mwarn = FALSE; char* subs[10]; /* store subckt lines */ int ends = 0; /* store .ends line numbers */ + struct card* bugcard = deck->nextcard; /* if error, store card */ static bool nesting_once = TRUE; + if (!bugcard) { + fprintf(cp_err, "\nEmpty netlist!\n\n"); + return; + } + /* prevent crash in inp.c, fcn inp_spsource: */ if (ciprefix(".param", deck->line) || ciprefix(".meas", deck->line)) { fprintf(cp_err, "\nError: title line is missing!\n\n"); @@ -8753,8 +8759,10 @@ static void inp_check_syntax(struct card *deck) check_subs--; if (check_subs >= 0 && check_subs < 10) subs[check_subs] = NULL; - else if (ends == 0) /* store first occurence */ + else if (ends == 0) {/* store first occurence */ ends = card->linenum_orig; + bugcard = card; + } continue; } // check for .if ... .endif @@ -8829,15 +8837,18 @@ static void inp_check_syntax(struct card *deck) if (check_control > 0) { fprintf(cp_err, "\nWarning: Missing .endc statement!\n"); + fprintf(stderr, " in file %s\n", bugcard->linesource); fprintf(cp_err, " This may cause subsequent errors.\n\n"); } if (check_control < 0) { fprintf(cp_err, "\nWarning: Missing .control statement!\n"); + fprintf(stderr, " in file %s\n", bugcard->linesource); fprintf(cp_err, " This may cause subsequent errors.\n\n"); } if (check_subs != 0) { fprintf(cp_err, "\nError: Mismatch of .subckt ... .ends statements!\n"); + fprintf(stderr, " in file %s\n", bugcard->linesource); fprintf(cp_err, " This will cause subsequent errors.\n\n"); if (ends > 0) fprintf(cp_err, "Check .ends in line number %d\n", ends); @@ -8847,6 +8858,7 @@ static void inp_check_syntax(struct card *deck) } if (check_if != 0) { fprintf(cp_err, "\nError: Mismatch of .if ... .endif statements!\n"); + fprintf(stderr, " in file %s\n", bugcard->linesource); fprintf(cp_err, " This may cause subsequent errors.\n\n"); } }