diff options
author | unknown <E:\Ladik\Mail> | 2015-01-18 17:34:34 +0100 |
---|---|---|
committer | unknown <E:\Ladik\Mail> | 2015-01-18 17:34:34 +0100 |
commit | 23ffb9d452397b3ca1742854ebbeeeb305b98bc4 (patch) | |
tree | 796714e507d68e8ecbda7313deb163fa586cd1a5 /src/SFileAddFile.cpp | |
parent | e9842c38cf9c55f682b2a411cea84ee59d69ec92 (diff) |
+ More paratemer checking to make nitpickers happy
Diffstat (limited to 'src/SFileAddFile.cpp')
-rw-r--r-- | src/SFileAddFile.cpp | 13 |
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; } |