Fix crash if base material gets GCed before it's referenced by instance during loading

This commit is contained in:
Wojtek Figat
2025-11-09 22:16:14 +01:00
parent d84cef0c18
commit 66dbba5c16

View File

@@ -218,10 +218,14 @@ Asset::LoadResult MaterialInstance::load()
Guid baseMaterialId;
headerStream.Read(baseMaterialId);
auto baseMaterial = Content::LoadAsync<MaterialBase>(baseMaterialId);
if (baseMaterial)
baseMaterial->AddReference();
// Load parameters
if (Params.Load(&headerStream))
{
if (baseMaterial)
baseMaterial->RemoveReference();
LOG(Warning, "Cannot load material parameters.");
return LoadResult::CannotLoadData;
}
@@ -239,6 +243,7 @@ Asset::LoadResult MaterialInstance::load()
ParamsChanged();
}
baseMaterial->RemoveReference();
return LoadResult::Ok;
}