From f93a36c29504a7aacfdb8cfdab2ec321bdfd2d98 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Mon, 17 Jul 2023 23:32:38 -0600 Subject: [PATCH] qbsp: don't write 0 size textures write them as offset -1 in dmiptexlump_t::stream_write() --- common/bspfile_generic.cc | 4 ++-- tests/test_qbsp.cc | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/common/bspfile_generic.cc b/common/bspfile_generic.cc index 3c950032..a027891b 100644 --- a/common/bspfile_generic.cc +++ b/common/bspfile_generic.cc @@ -185,7 +185,7 @@ void dmiptexlump_t::stream_write(std::ostream &stream) const // write out the miptex offsets for (auto &texture : textures) { - if (!texture.name[0]) { + if (!texture.name[0] || texture.width == 0 || texture.height == 0) { // dummy texture stream <= static_cast(-1); continue; @@ -203,7 +203,7 @@ void dmiptexlump_t::stream_write(std::ostream &stream) const } for (auto &texture : textures) { - if (texture.name[0]) { + if (texture.name[0] && texture.width && texture.height) { // fix up the padding to match the above conditions if (stream.tellp() % 4) { constexpr const char pad[4]{}; diff --git a/tests/test_qbsp.cc b/tests/test_qbsp.cc index 3d466a4f..9bf32bf4 100644 --- a/tests/test_qbsp.cc +++ b/tests/test_qbsp.cc @@ -1449,8 +1449,8 @@ TEST_CASE("q1_wad_mapname" * doctest::test_suite("testmaps_q1")) CHECK(GAME_QUAKE == bsp.loadversion->game->id); CHECK(bsp.dtex.textures.size() == 2); - CHECK(bsp.dtex.textures[0].name == "skip"); - CHECK(bsp.dtex.textures[0].data.size() == sizeof(dmiptex_t)); // no texture data + CHECK(bsp.dtex.textures[0].name == ""); // skip + CHECK(bsp.dtex.textures[0].data.size() == 0); // no texture data CHECK(bsp.dtex.textures[1].name == "{trigger"); CHECK(bsp.dtex.textures[1].data.size() > sizeof(dmiptex_t)); @@ -1763,7 +1763,7 @@ TEST_CASE("textures search relative to current directory") const auto [bsp, bspx, prt] = LoadTestmapQ1("q1_cwd_relative_wad.map"); REQUIRE(2 == bsp.dtex.textures.size()); // FIXME: we shouldn't really be writing skip - CHECK("skip" == bsp.dtex.textures[0].name); + CHECK("" == bsp.dtex.textures[0].name); // make sure the texture was written CHECK("orangestuff8" == bsp.dtex.textures[1].name);