From 905b1eae8c5b41582c689b3a7c88a0683f409fe0 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Wed, 6 Jul 2022 18:46:47 +0200 Subject: [PATCH] Remove inner couple {...} from {{...}} only when instance is not a behavioral source which will be translated to a B source. --- src/frontend/inpcom.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/frontend/inpcom.c b/src/frontend/inpcom.c index c0fd152c3..65fa1a9af 100644 --- a/src/frontend/inpcom.c +++ b/src/frontend/inpcom.c @@ -7623,24 +7623,27 @@ static void inp_quote_params(struct card *c, struct card *end_c, } } /* Now check if we have nested {..{ }...}, which is not accepted by numparam code. - Replace the inner { } by ( ) */ + Replace the inner { } by ( ). Do this only when this is not a behavioral device + which will become a B source. B source handling is special in inp.c. */ char* cut_line = c->line; - cut_line = strchr(cut_line, '{'); - if (cut_line) { - int level = 1; - cut_line++; - while (*cut_line != '\0') { - if (*cut_line == '{') { - level++; - if (level > 1) - *cut_line = '('; - } - else if (*cut_line == '}') { - if (level > 1) - *cut_line = ')'; - level--; - } + if (!b_transformation_wanted(cut_line)) { + cut_line = strchr(cut_line, '{'); + if (cut_line) { + int level = 1; cut_line++; + while (*cut_line != '\0') { + if (*cut_line == '{') { + level++; + if (level > 1) + *cut_line = '('; + } + else if (*cut_line == '}') { + if (level > 1) + *cut_line = ')'; + level--; + } + cut_line++; + } } } }