summaryrefslogtreecommitdiff
path: root/src/Companion.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Companion.cpp')
-rw-r--r--src/Companion.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/Companion.cpp b/src/Companion.cpp
index 743368f..93aefbc 100644
--- a/src/Companion.cpp
+++ b/src/Companion.cpp
@@ -666,6 +666,11 @@ void Companion::ProcessFile(YAML::Node root) {
void Companion::ProcessFile(YAML::Node root, std::atomic<size_t>& assetCount) {
assetCount++;
+ // Reset per-file state so segment/offset settings from a previous file don't
+ // bleed into this file's Phase 1 gAddrMap registration.
+ gCurrentSegmentNumber = 0;
+ gCurrentFileOffset = 0;
+ gCurrentCompressionType = CompressionType::None;
// Set compressed file offsets and compression type
if (auto segments = root[":config"]["segments"]) {
if (segments.IsSequence() && segments.size() > 0) {
@@ -711,7 +716,8 @@ void Companion::ProcessFile(YAML::Node root, std::atomic<size_t>& assetCount) {
node["path"] = gCurrentVirtualPath;
}
- this->gAddrMap[this->gCurrentFile][node["offset"].as<uint32_t>()] = std::make_tuple(output, node);
+ auto off = node["offset"].as<uint32_t>();
+ this->gAddrMap[this->gCurrentFile][off] = std::make_tuple(output, node);
}
// Stupid hack because the iteration broke the assets