From f0192c3b98e43e808762ec67bbc8cb2fd483616d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Leclercq?= Date: Mon, 24 May 2021 19:11:10 +0200 Subject: [PATCH] Core/ResourceLoader: Fix stream reset in case of error --- include/Nazara/Core/ResourceLoader.inl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/include/Nazara/Core/ResourceLoader.inl b/include/Nazara/Core/ResourceLoader.inl index b822a350b..1e17cf556 100644 --- a/include/Nazara/Core/ResourceLoader.inl +++ b/include/Nazara/Core/ResourceLoader.inl @@ -180,6 +180,7 @@ namespace Nz MemoryView stream(data, size); + UInt64 streamPos = stream.GetCursorPos(); bool found = false; for (auto& loaderPtr : m_loaders) { @@ -190,7 +191,7 @@ namespace Nz { if (loader.streamChecker) { - stream.SetCursorPos(0); + stream.SetCursorPos(streamPos); recognized = loader.streamChecker(stream, parameters); if (recognized == Ternary::False) @@ -210,7 +211,7 @@ namespace Nz } else { - stream.SetCursorPos(0); + stream.SetCursorPos(streamPos); recognized = loader.streamChecker(stream, parameters); if (recognized == Ternary::False) @@ -218,7 +219,7 @@ namespace Nz else if (recognized == Ternary::True) found = true; - stream.SetCursorPos(0); + stream.SetCursorPos(streamPos); std::shared_ptr resource = loader.streamLoader(stream, parameters); if (resource) @@ -293,12 +294,12 @@ namespace Nz } /*! - * \brief Registers the loader - * \return A pointer to the registered Load which can be unsed to unregister it later + * \brief Registers a loader + * \return A pointer to the registered Entry which can be unsed to unregister it later * * \param loader A collection of loader callbacks that will be registered * - * \seealso UnregisterLoader + * \see UnregisterLoader */ template auto ResourceLoader::RegisterLoader(Entry loader) -> const Entry* @@ -311,11 +312,11 @@ namespace Nz } /*! - * \brief Unregisters the loader + * \brief Unregisters a loader * * \param loader A pointer to a loader returned by RegisterLoad * - * \seealso RegisterLoader + * \see RegisterLoader */ template void ResourceLoader::UnregisterLoader(const Entry* loader)