aboutsummaryrefslogtreecommitdiff
path: root/src/SFileAddFile.cpp
diff options
context:
space:
mode:
authorunknown <E:\Ladik\Mail>2015-01-18 17:34:34 +0100
committerunknown <E:\Ladik\Mail>2015-01-18 17:34:34 +0100
commit23ffb9d452397b3ca1742854ebbeeeb305b98bc4 (patch)
tree796714e507d68e8ecbda7313deb163fa586cd1a5 /src/SFileAddFile.cpp
parente9842c38cf9c55f682b2a411cea84ee59d69ec92 (diff)
+ More paratemer checking to make nitpickers happy
Diffstat (limited to 'src/SFileAddFile.cpp')
-rw-r--r--src/SFileAddFile.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/SFileAddFile.cpp b/src/SFileAddFile.cpp
index 524fb50..0878ab7 100644
--- a/src/SFileAddFile.cpp
+++ b/src/SFileAddFile.cpp
@@ -725,11 +725,20 @@ bool WINAPI SFileCreateFile(
nError = ERROR_INVALID_PARAMETER;
}
- // Check for MPQs that have invalid block table size
+ // The number of files must not overflow the maximum
// Example: size of block table: 0x41, size of hash table: 0x40
if(nError == ERROR_SUCCESS)
{
- if(ha->dwFileTableSize > ha->dwMaxFileCount)
+ DWORD dwReservedFiles = ha->dwReservedFiles;
+
+ if(dwReservedFiles == 0)
+ {
+ dwReservedFiles += ha->dwFileFlags1 ? 1 : 0;
+ dwReservedFiles += ha->dwFileFlags2 ? 1 : 0;
+ dwReservedFiles += ha->dwFileFlags3 ? 1 : 0;
+ }
+
+ if((ha->dwFileTableSize + dwReservedFiles) > ha->dwMaxFileCount)
nError = ERROR_DISK_FULL;
}