From 66dbba5c16be533359b4cd8365f17738c5fd551e Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Sun, 9 Nov 2025 22:16:14 +0100 Subject: [PATCH] Fix crash if base material gets GCed before it's referenced by instance during loading --- Source/Engine/Content/Assets/MaterialInstance.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Source/Engine/Content/Assets/MaterialInstance.cpp b/Source/Engine/Content/Assets/MaterialInstance.cpp index b3710ebbd..78a276a8a 100644 --- a/Source/Engine/Content/Assets/MaterialInstance.cpp +++ b/Source/Engine/Content/Assets/MaterialInstance.cpp @@ -218,10 +218,14 @@ Asset::LoadResult MaterialInstance::load() Guid baseMaterialId; headerStream.Read(baseMaterialId); auto baseMaterial = Content::LoadAsync(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; }