From ae6375c5194cedcfb8bcfba05664aeaedf207670 Mon Sep 17 00:00:00 2001 From: Giles Atkinson <“gatk555@gmail.com”> Date: Mon, 6 Mar 2023 11:53:36 +0000 Subject: [PATCH] Prevent a crash when "portnum" is used in a voltage source without "z0". --- src/spicelib/devices/vsrc/vsrcpar.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/spicelib/devices/vsrc/vsrcpar.c b/src/spicelib/devices/vsrc/vsrcpar.c index bbe812143..19686293f 100644 --- a/src/spicelib/devices/vsrc/vsrcpar.c +++ b/src/spicelib/devices/vsrc/vsrcpar.c @@ -298,14 +298,19 @@ VSRCparam(int param, IFvalue *value, GENinstance *inst, IFvalue *select) { here->VSRCportNum = value->iValue; here->VSRCportNumGiven = TRUE; - here->VSRCisPort = ((here->VSRCportNumGiven) && (here->VSRCportNum > 0) && (here->VSRCportZ0 > 0.0)); + here->VSRCisPort = (here->VSRCportNum > 0); + if (here->VSRCportZ0 <= 0.0) { + here->VSRCportZ0 = 50; + here->VSRCVAmplitude = + sqrt(here->VSRCportPower * 4.0 * here->VSRCportZ0); + } break; } case VSRC_PORTZ0: { here->VSRCportZ0 = value->rValue; - here->VSRCVAmplitude = sqrt(here->VSRCportPower * 4.0 * here->VSRCportZ0); - here->VSRCisPort = ((here->VSRCportNumGiven) && (here->VSRCportNum > 0) && (here->VSRCportZ0 > 0.0)); + here->VSRCVAmplitude = + sqrt(here->VSRCportPower * 4.0 * here->VSRCportZ0); here->VSRCportZ0Given = TRUE; break; }