aboutsummaryrefslogtreecommitdiff
path: root/dep/CascLib/src/common/FileTree.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-02-06 20:08:39 +0100
committerShauren <shauren.trinity@gmail.com>2023-02-06 20:08:39 +0100
commitfd154940eddc54e556d6bfb5147cedbda4750c3e (patch)
tree8ff9e3974e8479c1b8157f8aa40bc094cba24bc2 /dep/CascLib/src/common/FileTree.cpp
parent99320464997a5411b7245cb952eaf6cdf8a2a978 (diff)
Dep/CascLib: Update to ladislav-zezula/CascLib@a5080b5794027a25d98aa6024b2bef17d06fe0ea
Diffstat (limited to 'dep/CascLib/src/common/FileTree.cpp')
-rw-r--r--dep/CascLib/src/common/FileTree.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/dep/CascLib/src/common/FileTree.cpp b/dep/CascLib/src/common/FileTree.cpp
index 490698122e5..fa21863c5e9 100644
--- a/dep/CascLib/src/common/FileTree.cpp
+++ b/dep/CascLib/src/common/FileTree.cpp
@@ -177,7 +177,7 @@ bool CASC_FILE_TREE::RebuildNameMaps()
if(NameMap.Create(nMaxItems, sizeof(ULONGLONG), FIELD_OFFSET(CASC_FILE_NODE, FileNameHash)) != ERROR_SUCCESS)
return false;
- // Reset the entire array, but keep the buffer allocated
+ // Reset the entire array, but buffers allocated
FileDataIds.Reset();
// Parse all items and insert them to the map
@@ -393,13 +393,22 @@ PCASC_FILE_NODE CASC_FILE_TREE::ItemAt(size_t nItemIndex)
PCASC_FILE_NODE CASC_FILE_TREE::PathAt(char * szBuffer, size_t cchBuffer, size_t nItemIndex)
{
+ PCASC_FILE_NODE * RefFileNode;
PCASC_FILE_NODE pFileNode = NULL;
// If we have FileDataId, then we need to enumerate the files by FileDataId
if(FileDataIds.IsInitialized())
- pFileNode = *(PCASC_FILE_NODE *)FileDataIds.ItemAt(nItemIndex);
+ {
+ RefFileNode = (PCASC_FILE_NODE *)FileDataIds.ItemAt(nItemIndex);
+ if(RefFileNode != NULL)
+ {
+ pFileNode = *(PCASC_FILE_NODE *)FileDataIds.ItemAt(nItemIndex);
+ }
+ }
else
+ {
pFileNode = (PCASC_FILE_NODE)NodeTable.ItemAt(nItemIndex);
+ }
// Construct the entire path
PathAt(szBuffer, cchBuffer, pFileNode);