From 77afaa5b7348c387cc6ba838524c1cdfb3d91c94 Mon Sep 17 00:00:00 2001 From: Matthew Mott Date: Tue, 5 Mar 2019 20:16:05 +0000 Subject: [PATCH] Avoid returning 'assets.lst' from forEachFile() The assets.lst is intended to be converted into vfs::Visibility values by the VFS module, not returned directly as a file. --- radiant/test/vfsTest.cpp | 4 ++++ radiant/vfs/Doom3FileSystem.cpp | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/radiant/test/vfsTest.cpp b/radiant/test/vfsTest.cpp index 17cb4fe2f4..af6ceff6ba 100644 --- a/radiant/test/vfsTest.cpp +++ b/radiant/test/vfsTest.cpp @@ -70,4 +70,8 @@ BOOST_FIXTURE_TEST_CASE(handleAssetsLst, VFSFixture) BOOST_TEST(fileVis.count("darkmod/test/unit_cube.ase") == 1); BOOST_TEST(fileVis["darkmod/test/unit_cube.ase"] == vfs::Visibility::HIDDEN); BOOST_TEST(fileVis["darkmod/test/unit_cube.lwo"] == vfs::Visibility::NORMAL); + + // The assets.lst should be converted into visibility information, but NOT + // returned as an actual file to the calling code. + BOOST_TEST(fileVis.count("assets.lst") == 0); } diff --git a/radiant/vfs/Doom3FileSystem.cpp b/radiant/vfs/Doom3FileSystem.cpp index 0edd19a7ce..92db781c65 100644 --- a/radiant/vfs/Doom3FileSystem.cpp +++ b/radiant/vfs/Doom3FileSystem.cpp @@ -211,6 +211,10 @@ class FileVisitor: public Archive::Visitor return; // already visited } + // Don't return assets.lst itself + if (subname == AssetsList::FILENAME) + return; + // Suitable file, call the callback and add to visited file set vfs::Visibility vis = _assetsList ? _assetsList->getVisibility(subname) : Visibility::NORMAL;