From 80ba7ee24e9a5e3f8c0afd4ffcd30a2663692082 Mon Sep 17 00:00:00 2001 From: Ayub Ahmed Date: Sun, 30 Jul 2017 04:21:35 +0600 Subject: [PATCH] Don't read IWAD's TEXTURE lump unless specified --- src/compose.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/src/compose.c b/src/compose.c index 3472d1d..09c37f4 100644 --- a/src/compose.c +++ b/src/compose.c @@ -272,17 +272,19 @@ void CMPOmakePWAD(const char *doomwad, WADTYPE type, const char *PWADname, ** read texture1 */ if (select & BTEXTUR) { + FoundOne = false; if (TXTseekSection(TXT, "TEXTURE1")) { Phase("CM50", "Making TEXTURE1"); TXUinit(); - entry = WADRfindEntry(&iwad, "TEXTURE1"); - if (entry >= 0) { - EntryP = WADRreadEntry(&iwad, entry, &EntrySz); - TXUreadTEXTURE("TEXTURE1", EntryP, EntrySz, NULL, 0, true); - free(EntryP); - } else - Warning("CM51", "Can't find TEXTURE1 in main WAD"); - FoundOne = false; + if (Type == IWAD) { + entry = WADRfindEntry(&iwad, "TEXTURE1"); + if (entry >= 0) { + EntryP = WADRreadEntry(&iwad, entry, &EntrySz); + TXUreadTEXTURE("TEXTURE1", EntryP, EntrySz, NULL, 0, true); + free(EntryP); + } else + Warning("CM51", "Can't find TEXTURE1 in main WAD"); + } else { /*read TEXTURES composing TEXTURE1 */ while (TXTentryParse (name, filenam, &X, &Y, &Repeat, TXT, false) == true) { @@ -310,6 +312,7 @@ void CMPOmakePWAD(const char *doomwad, WADTYPE type, const char *PWADname, WADRclose(&pwad); } else ProgError("CM54", "Can't find texture list %s", file); + } } /*write texture */ if (FoundOne == true) { @@ -325,17 +328,19 @@ void CMPOmakePWAD(const char *doomwad, WADTYPE type, const char *PWADname, ** read texture2 */ if (select & BTEXTUR) { + FoundOne = false; if (TXTseekSection(TXT, "TEXTURE2")) { Phase("CM55", "Making TEXTURE2"); TXUinit(); - entry = WADRfindEntry(&iwad, "TEXTURE2"); - if (entry >= 0) { - EntryP = WADRreadEntry(&iwad, entry, &EntrySz); - TXUreadTEXTURE("TEXTURE2", EntryP, EntrySz, NULL, 0, true); - free(EntryP); - } else - Warning("CM56", "Can't find TEXTURE2 in main WAD"); - FoundOne = false; + if (Type == IWAD) { + entry = WADRfindEntry(&iwad, "TEXTURE2"); + if (entry >= 0) { + EntryP = WADRreadEntry(&iwad, entry, &EntrySz); + TXUreadTEXTURE("TEXTURE2", EntryP, EntrySz, NULL, 0, true); + free(EntryP); + } else + Warning("CM56", "Can't find TEXTURE2 in main WAD"); + } else { /*read TEXTURES composing TEXTURE2 */ while (TXTentryParse (name, filenam, &X, &Y, &Repeat, TXT, false) == true) { @@ -363,6 +368,7 @@ void CMPOmakePWAD(const char *doomwad, WADTYPE type, const char *PWADname, WADRclose(&pwad); } else ProgError("CM59", "Can't find texture list %s", file); + } } /*write texture */ if (FoundOne == true) {