Network/NetPacket: Fix mutex recursive lock leading to an exception

This commit is contained in:
SirLynix 2023-07-15 10:36:41 +02:00
parent 42ea4ebbfb
commit af3d1cfa26
2 changed files with 4 additions and 4 deletions

View File

@ -64,7 +64,7 @@ namespace Nz
MemoryStream m_memoryStream; MemoryStream m_memoryStream;
UInt16 m_netCode; UInt16 m_netCode;
static std::mutex s_availableBuffersMutex; static std::recursive_mutex s_availableBuffersMutex;
static std::vector<std::pair<std::size_t, std::unique_ptr<ByteArray>>> s_availableBuffers; static std::vector<std::pair<std::size_t, std::unique_ptr<ByteArray>>> s_availableBuffers;
}; };
} }

View File

@ -112,7 +112,7 @@ namespace Nz
std::size_t size = m_buffer->GetSize(); std::size_t size = m_buffer->GetSize();
std::lock_guard<std::mutex> lock(s_availableBuffersMutex); std::lock_guard<std::recursive_mutex> lock(s_availableBuffersMutex);
s_availableBuffers.emplace_back(std::make_pair(size, std::move(m_buffer))); s_availableBuffers.emplace_back(std::make_pair(size, std::move(m_buffer)));
} }
@ -131,7 +131,7 @@ namespace Nz
NazaraAssert(minCapacity >= cursorPos, "Cannot init stream with a smaller capacity than wanted cursor pos"); NazaraAssert(minCapacity >= cursorPos, "Cannot init stream with a smaller capacity than wanted cursor pos");
{ {
std::lock_guard<std::mutex> lock(s_availableBuffersMutex); std::lock_guard<std::recursive_mutex> lock(s_availableBuffersMutex);
FreeStream(); //< In case it wasn't released yet FreeStream(); //< In case it wasn't released yet
@ -171,6 +171,6 @@ namespace Nz
s_availableBuffers.clear(); s_availableBuffers.clear();
} }
std::mutex NetPacket::s_availableBuffersMutex; std::recursive_mutex NetPacket::s_availableBuffersMutex;
std::vector<std::pair<std::size_t, std::unique_ptr<ByteArray>>> NetPacket::s_availableBuffers; std::vector<std::pair<std::size_t, std::unique_ptr<ByteArray>>> NetPacket::s_availableBuffers;
} }