Fix crash on moving empty NetPacket
This commit is contained in:
parent
602bdbe292
commit
b6a33c76ca
|
|
@ -27,6 +27,8 @@ namespace Nz
|
|||
ByteStream(ByteStream&& stream) noexcept = default;
|
||||
virtual ~ByteStream();
|
||||
|
||||
inline void ClearStream();
|
||||
|
||||
inline Endianness GetDataEndianness() const;
|
||||
inline Nz::UInt64 GetSize() const;
|
||||
inline Stream* GetStream() const;
|
||||
|
|
|
|||
|
|
@ -30,6 +30,18 @@ namespace Nz
|
|||
NazaraWarning("Failed to flush bits at serializer destruction");
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Reset stream
|
||||
*/
|
||||
inline void ByteStream::ClearStream()
|
||||
{
|
||||
// We don't want to lose some bits..
|
||||
FlushBits();
|
||||
|
||||
m_context.stream = nullptr;
|
||||
m_ownedStream.reset();
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Gets the stream endianness
|
||||
* \return Type of the endianness
|
||||
|
|
@ -113,22 +125,15 @@ namespace Nz
|
|||
}
|
||||
|
||||
/*!
|
||||
* \brief Sets this with a stream
|
||||
* \brief Changes stream
|
||||
*
|
||||
* \param stream Stream existing
|
||||
*
|
||||
* \remark Produces a NazaraAssert if stream is invalid
|
||||
*/
|
||||
|
||||
inline void ByteStream::SetStream(Stream* stream)
|
||||
{
|
||||
NazaraAssert(stream, "Invalid stream");
|
||||
|
||||
// We don't want to lose some bits..
|
||||
FlushBits();
|
||||
ClearStream();
|
||||
|
||||
m_context.stream = stream;
|
||||
m_ownedStream.reset();
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -56,9 +56,12 @@ namespace Nz
|
|||
m_netCode(packet.m_netCode)
|
||||
{
|
||||
///< Redirect memory stream to the moved buffer
|
||||
if (m_buffer)
|
||||
{
|
||||
m_memoryStream.SetBuffer(m_buffer.get(), m_memoryStream.GetOpenMode());
|
||||
SetStream(&m_memoryStream);
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* \brief Destructs the object
|
||||
|
|
@ -206,8 +209,13 @@ namespace Nz
|
|||
m_netCode = packet.m_netCode;
|
||||
|
||||
///< Redirect memory stream to the moved buffer
|
||||
if (m_buffer)
|
||||
{
|
||||
m_memoryStream.SetBuffer(m_buffer.get(), m_memoryStream.GetOpenMode());
|
||||
SetStream(&m_memoryStream);
|
||||
}
|
||||
else
|
||||
SetStream(static_cast<Stream*>(nullptr));
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue