diff --git a/include/Nazara/Core/AppFilesystemComponent.inl b/include/Nazara/Core/AppFilesystemComponent.inl
index 96a71c3ec..3e584a776 100644
--- a/include/Nazara/Core/AppFilesystemComponent.inl
+++ b/include/Nazara/Core/AppFilesystemComponent.inl
@@ -162,7 +162,13 @@ namespace Nz
}
else if constexpr (std::is_same_v)
{
- resource = T::OpenFromStream(*arg.stream, params, std::forward(args)...);
+ // If stream has an associated filesystem path, use OpenFromFile instead to make sure the File stream is kept alive
+ // (a temporary FileEntry may be created when resolving a filesystem folder)
+ if (std::filesystem::path filePath = arg.stream->GetPath(); !filePath.empty())
+ resource = T::OpenFromFile(*arg.stream, params, std::forward(args)...);
+ else
+ resource = T::OpenFromStream(*arg.stream, params, std::forward(args)...);
+
return true;
}
else