From 788a5e5fa0dda00523ed559da053eb0449cde6ec Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 21 Feb 2015 15:04:53 +0100 Subject: [PATCH] inpptree parser, bug fix, segfault due to usage of an unknown function for example: B1 1 0 V = {log(2.0, 1.3) + nosuchthing(2.0, 1.3)} --- src/spicelib/parser/inpptree-parser.y | 5 ++++- src/spicelib/parser/inpptree.c | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/spicelib/parser/inpptree-parser.y b/src/spicelib/parser/inpptree-parser.y index 9e78f6192..481705353 100644 --- a/src/spicelib/parser/inpptree-parser.y +++ b/src/spicelib/parser/inpptree-parser.y @@ -106,7 +106,10 @@ exp: | '-' exp %prec NEG { $$ = mkfnode("-",$2); } - | TOK_STR '(' nonempty_arglist ')' { $$ = mkfnode($1, $3); txfree((void*)$1); } + | TOK_STR '(' nonempty_arglist ')' { $$ = mkfnode($1, $3); + if (!$$) + YYERROR; + txfree((void*)$1); } | TOK_pnode diff --git a/src/spicelib/parser/inpptree.c b/src/spicelib/parser/inpptree.c index b292621a3..0dac42703 100644 --- a/src/spicelib/parser/inpptree.c +++ b/src/spicelib/parser/inpptree.c @@ -197,7 +197,7 @@ static struct constant { void INPgetTree(char **line, INPparseTree ** pt, CKTcircuit *ckt, INPtables * tab) { - INPparseNode *p; + INPparseNode *p = NULL; int i, rv; values = NULL;