From 393c924886aa0ea9416bc2287d7d46f547cbf685 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Sun, 22 Jul 2018 10:30:50 +0200 Subject: [PATCH] improve finding tokens, considering nested parens --- src/frontend/inp.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/frontend/inp.c b/src/frontend/inp.c index 1f1b2dfd4..82f44facb 100644 --- a/src/frontend/inp.c +++ b/src/frontend/inp.c @@ -1989,7 +1989,7 @@ limit(double nominal_val, double abs_variation) * After subcircuit expansion, agauss may be still existing in b-lines, * however agauss does not exist in the B source parser, and it would * not make sense in adding it there, because in each time step a different - * return form agauss would result. + * return from agauss would result. * So we have to do the following in each B-line: * check for agauss(x,y,z), and replace it by a suitable return value * of agauss() @@ -2030,13 +2030,11 @@ eval_agauss(struct card *deck, char *fcn) int nerror; begstr = copy_substring(curr_line, ap); - lparen = strchr(ap, '('); - rparen = strchr(ap, ')'); - tmp1str = midstr = copy_substring(lparen + 1, rparen); - if (rparen + 1) - contstr = copy(rparen + 1); - + tmp1str = midstr = gettok_char(&lparen, ')', FALSE, TRUE); + if (lparen + 1) + contstr = copy(lparen + 1); + tmp1str++; /* skip '(' */ /* find the parameters */ delstr = tmp2str = gettok(&tmp1str); x = INPevaluate(&tmp2str, &nerror, 1);