From fab7c1bc6e38eb946c8c059f14fc9d09c2c701d3 Mon Sep 17 00:00:00 2001 From: danij Date: Wed, 3 Oct 2012 10:41:45 +0100 Subject: [PATCH] LumpDirectory: Don't count duplicates in the pruneFile() total --- doomsday/engine/portable/src/lumpdirectory.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doomsday/engine/portable/src/lumpdirectory.cpp b/doomsday/engine/portable/src/lumpdirectory.cpp index b008a8fe31..cb9ae53ca2 100644 --- a/doomsday/engine/portable/src/lumpdirectory.cpp +++ b/doomsday/engine/portable/src/lumpdirectory.cpp @@ -106,7 +106,7 @@ struct LumpDirectory::Instance /** * @param pruneFlags Passed by reference to avoid deep copy on value-write. - * @return Number of lumps flagged during this op. + * @return Number of lumps newly flagged during this op. */ int flagFileLumps(QBitArray& pruneFlags, AbstractFile& file) { @@ -116,6 +116,7 @@ struct LumpDirectory::Instance int numFlagged = 0; for(int i = 0; i < numRecords; ++i) { + if(pruneFlags.testBit(i)) continue; if(reinterpret_cast(lumpInfos[i]->container) != &file) continue; pruneFlags.setBit(i, true); numFlagged += 1; @@ -147,7 +148,7 @@ struct LumpDirectory::Instance /** * @param pruneFlags Passed by reference to avoid deep copy on value-write. - * @return Number of lumps flagged during this op. + * @return Number of lumps newly flagged during this op. */ int flagDuplicateLumps(QBitArray& pruneFlags) { @@ -178,6 +179,7 @@ struct LumpDirectory::Instance int numFlagged = 0; for(int i = 1; i < numRecords; ++i) { + if(pruneFlags.testBit(i)) continue; if(Str_CompareIgnoreCase(sortInfos[i - 1].path, Str_Text(sortInfos[i].path))) continue; pruneFlags.setBit(sortInfos[i].origIndex, true); numFlagged += 1;