Core/ResourceLoader: Fix stream reset in case of error

This commit is contained in:
Jérôme Leclercq 2021-05-24 19:11:10 +02:00
parent cce32a64d4
commit f0192c3b98
1 changed files with 9 additions and 8 deletions

View File

@ -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<Type> 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<typename Type, typename Parameters>
auto ResourceLoader<Type, Parameters>::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<typename Type, typename Parameters>
void ResourceLoader<Type, Parameters>::UnregisterLoader(const Entry* loader)