From af5b7f10cf3450a7e7308871d7c61cee9531a915 Mon Sep 17 00:00:00 2001 From: "Darryl L. Miles" Date: Tue, 8 Oct 2024 04:49:24 +0100 Subject: [PATCH] lef/defWrite.c: reworked kareefardi_fix-def-write --- lef/defWrite.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lef/defWrite.c b/lef/defWrite.c index 3fa90b60..6904e781 100644 --- a/lef/defWrite.c +++ b/lef/defWrite.c @@ -2965,13 +2965,6 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive) TxError("Please name the cell before generating DEF.\n"); return; } - char * outName_part ; - if((outName_part = mallocMagic(strlen(outName)+strlen("_part")+1)) != NULL) { - outName_part[0] = '\0'; - strcat(outName_part, outName); - strcat(outName_part, "_part"); - } - // f = lefFileOpen(def, outName, ".def", "w", &filename); @@ -2990,6 +2983,17 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive) } filename1 = StrDup((char **)NULL, filename); + char *outName_part; + { /* use the 'filename' given back from lefFileOpen() */ + outName_part = mallocMagic(strlen(filename)+strlen("_part")+1); + ASSERT(outName_part, "outName_part"); + strcpy(outName_part, filename); + char *cp = strrchr(outName_part, '.'); + if (cp) + *cp = '\0'; /* remove extn */ + strcat(outName_part, "_part"); + } + defWriteHeader(def, f, scale, units); HashInit(&defViaTable, 256, HT_STRINGKEYS); @@ -3036,8 +3040,8 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive) /* If part 2 cannot be opened, remove part 1 */ fclose(f); unlink(filename1); - freeMagic(filename1); - freeMagic(outName_part); + freeMagic(filename1); + freeMagic(outName_part); return; } filename2 = StrDup((char **)NULL, filename); @@ -3156,7 +3160,7 @@ DefWriteCell(def, outName, allSpecial, units, analRetentive) unlink(filename1); freeMagic(filename1); freeMagic(filename2); - freeMagic(outName_part); + freeMagic(outName_part); return; } while (fgets(line, sizeof line, f2) != NULL) fprintf(f, "%s", line);