From 4f73c27d862e2a610769106f3934c71bf460f3f1 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Tue, 14 Dec 2021 14:57:59 +0100 Subject: [PATCH] Memory access error: don't free GENinst->GENname. Use memcpy to overwrite old name by a (shorter) new name. Compiler warnings are thus removed. --- src/frontend/inpc_probe.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/frontend/inpc_probe.c b/src/frontend/inpc_probe.c index ea0f08dfe..6c3fbdf8e 100644 --- a/src/frontend/inpc_probe.c +++ b/src/frontend/inpc_probe.c @@ -1132,15 +1132,15 @@ void modprobenames(INPtables* tab) { GENinstance* GENinst; for (GENinst = tab->defVmod->GENinstances; GENinst; GENinst = GENinst->GENnextInstance) { char* name = GENinst->GENname; + /* Do not inlude the x in the new name, XU1 -> U1 */ if (prefix("vcurr_x", name) && !isdigit_c(name[7])) { /* copy from char no. 7 to (and excluding) second colon */ char* endname = strchr(name, ':'); endname = strchr(endname + 1, ':'); char* newname = copy_substring(name + 7, endname); - tfree(GENinst->GENname); - GENinst->GENname = newname; + memcpy(name, newname, strlen(newname) + 1); + tfree(newname); } - /* Do not inlude the x in the new name */ else if (prefix("vcurr_", name)) { /* copy from char no. 6 to (and excluding) second colon */ char* endname = strchr(name, ':'); @@ -1148,14 +1148,14 @@ void modprobenames(INPtables* tab) { /* two-terminal device, one colon, copy all from char no. 6 to (and excluding) colon */ if (!endname2) { char* newname = copy_substring(name + 6, endname); - tfree(GENinst->GENname); - GENinst->GENname = newname; + memcpy(name, newname, strlen(newname) + 1); + tfree(newname); } /* copy from char no. 6 to (and excluding) second colon */ else { char* newname = copy_substring(name + 6, endname2); - tfree(GENinst->GENname); - GENinst->GENname = newname; + memcpy(name, newname, strlen(newname) + 1); + tfree(newname); } } }