summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorinspectredc <78732756+inspectredc@users.noreply.github.com>2024-06-10 05:11:41 +0100
committerGitHub <noreply@github.com>2024-06-09 22:11:41 -0600
commit4d3f360d66fdcdbb19c65fecfae42b85488da119 (patch)
tree61fe6349c8d8bbb0f8b8cacb5e60ec83011f7b84
parentdd5d75e2b93d4d2266ed47ee859392f55f6dbe25 (diff)
add null checking (#132)
-rw-r--r--src/factories/AssetArrayFactory.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/factories/AssetArrayFactory.cpp b/src/factories/AssetArrayFactory.cpp
index 670f5f7..b62a8c2 100644
--- a/src/factories/AssetArrayFactory.cpp
+++ b/src/factories/AssetArrayFactory.cpp
@@ -30,13 +30,17 @@ ExportResult AssetArrayCodeExporter::Export(std::ostream &write, std::shared_ptr
write << "static " << data->mType << "* " << symbol << "[] = {\n";
for (auto ptr : data->mPtrs) {
write << fourSpaceTab;
- auto dec = Companion::Instance->GetNodeByAddr(ptr);
- if (dec.has_value()) {
- auto node = std::get<1>(dec.value());
- auto assetSymbol = GetSafeNode<std::string>(node, "symbol");
- write << "&" << assetSymbol << ",\n";
+ if (ptr == 0) {
+ write << "NULL,\n";
} else {
- write << FORMAT_HEX(ptr) << ",\n";
+ auto dec = Companion::Instance->GetNodeByAddr(ptr);
+ if (dec.has_value()) {
+ auto node = std::get<1>(dec.value());
+ auto assetSymbol = GetSafeNode<std::string>(node, "symbol");
+ write << "&" << assetSymbol << ",\n";
+ } else {
+ write << FORMAT_HEX(ptr) << ",\n";
+ }
}
}
write << "};\n";
@@ -86,10 +90,12 @@ std::optional<std::shared_ptr<IParsedData>> AssetArrayFactory::parse(std::vector
for (uint32_t i = 0; i < count; ++i) {
auto ptr = reader.ReadUInt32();
- YAML::Node assetNode;
- assetNode["type"] = factoryType;
- assetNode["offset"] = ptr;
- Companion::Instance->AddAsset(assetNode);
+ if (ptr != 0) {
+ YAML::Node assetNode;
+ assetNode["type"] = factoryType;
+ assetNode["offset"] = ptr;
+ Companion::Instance->AddAsset(assetNode);
+ }
ptrs.emplace_back(ptr);
}