Fixed Crashing and edge cases

This commit is contained in:
OusmBlueNinja 2025-05-11 23:13:06 -05:00
parent 86abf8e5b7
commit c19658a9dd
2 changed files with 15 additions and 5 deletions

View File

@ -164,7 +164,6 @@ void FileExplorer::Show(bool* p_open)
entries.push_back(e); entries.push_back(e);
} }
// Sort
std::sort(entries.begin(), entries.end(), [&](auto &a, auto &b) { std::sort(entries.begin(), entries.end(), [&](auto &a, auto &b) {
if (sortMode == 1) { if (sortMode == 1) {
bool da = a.is_directory(), db = b.is_directory(); bool da = a.is_directory(), db = b.is_directory();
@ -231,7 +230,7 @@ void FileExplorer::Show(bool* p_open)
break; break;
} }
clicked = ImGui::Button( clicked = ImGui::Button(
(std::string("##entry") + label).c_str(), (label + std::string("##entry") + label).c_str(),
ImVec2(iconSize, iconSize)); ImVec2(iconSize, iconSize));
} }

View File

@ -792,14 +792,25 @@ void PrefabAssetInfo::ReloadFromYAML()
std::shared_ptr<Object> PrefabAssetInfo::Instantiate() const std::shared_ptr<Object> PrefabAssetInfo::Instantiate() const
{ {
if (!prefabYAML || !prefabYAML.IsMap()) if (!prefabYAML || !prefabYAML.IsMap()) {
{ Logger::LogError("Cannot instantiate '%s': invalid YAML.", prefabName.c_str());
Logger::LogError("[PrefabAsset] Cannot instantiate: prefab YAML is invalid."); return nullptr;
}
static thread_local std::unordered_set<uint64_t> s_instantiating;
if (!s_instantiating.insert(uaid).second) {
Logger::LogError(
"Recursive instantiation detected for prefab '%s' (UAID=%llu).",
prefabName.c_str(), (unsigned long long)uaid
);
return nullptr; return nullptr;
} }
auto newObj = std::make_shared<Object>(prefabName); auto newObj = std::make_shared<Object>(prefabName);
newObj->Load(prefabYAML); newObj->Load(prefabYAML);
s_instantiating.erase(uaid);
return newObj; return newObj;
} }