diff options
| author | inspectredc <78732756+inspectredc@users.noreply.github.com> | 2024-06-10 05:11:41 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-09 22:11:41 -0600 |
| commit | 4d3f360d66fdcdbb19c65fecfae42b85488da119 (patch) | |
| tree | 61fe6349c8d8bbb0f8b8cacb5e60ec83011f7b84 | |
| parent | dd5d75e2b93d4d2266ed47ee859392f55f6dbe25 (diff) | |
add null checking (#132)
| -rw-r--r-- | src/factories/AssetArrayFactory.cpp | 26 |
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); } |
