Network/NetPacket: Fix mutex recursive lock leading to an exception
This commit is contained in:
parent
42ea4ebbfb
commit
af3d1cfa26
|
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue