diff --git a/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.cpp b/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.cpp index ca37d89a..087e1ebe 100644 --- a/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.cpp +++ b/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.cpp @@ -285,10 +285,10 @@ uint32_t pyVaultNode::GetCreateAgeTime( void ) return GetCreateTime(); } -const char * pyVaultNode::GetCreateAgeName() +plString pyVaultNode::GetCreateAgeName() const { if (fNode) - return fNode->GetCreateAgeName().c_str(); + return fNode->GetCreateAgeName(); return ""; } diff --git a/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.h b/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.h index b63e6b80..a4f0d790 100644 --- a/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.h +++ b/Sources/Plasma/FeatureLib/pfPython/pyVaultNode.h @@ -137,7 +137,7 @@ public: PyObject* GetCreatorNode( void ); // returns pyVaultPlayerInfoNode uint32_t GetCreateTime( void ); uint32_t GetCreateAgeTime( void ); - const char * GetCreateAgeName( void ); + plString GetCreateAgeName() const; plUUID GetCreateAgeGuid(void) const; PyObject* GetCreateAgeCoords (); diff --git a/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeGlue.cpp b/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeGlue.cpp index 172e0b46..d46c125b 100644 --- a/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeGlue.cpp +++ b/Sources/Plasma/FeatureLib/pfPython/pyVaultNodeGlue.cpp @@ -149,7 +149,7 @@ PYTHON_METHOD_DEFINITION_NOARGS(ptVaultNode, getCreateAgeTime) PYTHON_METHOD_DEFINITION_NOARGS(ptVaultNode, getCreateAgeName) { - return PyString_FromString(self->fThis->GetCreateAgeName()); + return PyString_FromPlString(self->fThis->GetCreateAgeName()); } PYTHON_METHOD_DEFINITION_NOARGS(ptVaultNode, getCreateAgeGuid) diff --git a/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.cpp b/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.cpp index 33d0a798..fb997781 100644 --- a/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.cpp +++ b/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.cpp @@ -293,6 +293,23 @@ void NetGameRank::CopyFrom(const NetGameRank & fromRank) { * ***/ +//============================================================================ +NetVaultNode::Blob::Blob(const Blob& rhs) +{ + buffer = new uint8_t[rhs.size]; + size = rhs.size; + memcpy(buffer, rhs.buffer, rhs.size); +} + +//============================================================================ +NetVaultNode::Blob::Blob(Blob&& rhs) +{ + size = rhs.size; + buffer = rhs.buffer; + rhs.size = 0; + rhs.buffer = nullptr; +} + //============================================================================ void NetVaultNode::Blob::operator=(const Blob& rhs) { @@ -478,13 +495,13 @@ template<> static void IRead(const uint8_t*& buf, plString& dest) { uint32_t size = *(reinterpret_cast(buf)); - uint32_t arraySize = size / 2; + uint32_t nChars = (size / sizeof(uint16_t)) - 1; buf += sizeof(uint32_t); plStringBuffer str; - uint16_t* theStrBuffer = str.CreateWritableBuffer(arraySize - 1); + uint16_t* theStrBuffer = str.CreateWritableBuffer(nChars); memcpy(theStrBuffer, buf, size); - theStrBuffer[arraySize - 1] = 0; + theStrBuffer[nChars] = 0; dest = plString::FromUtf16(str); buf += size; } @@ -546,14 +563,14 @@ void NetVaultNode::Read(const uint8_t* buf, size_t size) //============================================================================ template -static void IWrite(ARRAY(uint8_t)* buffer, T value) +static void IWrite(ARRAY(uint8_t)* buffer, const T& value) { uint8_t* ptr = buffer->New(sizeof(T)); memcpy(ptr, &value, sizeof(T)); } template<> -static void IWrite(ARRAY(uint8_t)* buffer, plString value) +static void IWrite(ARRAY(uint8_t)* buffer, const plString& value) { plStringBuffer utf16 = value.ToUtf16(); uint32_t strsz = (utf16.GetSize() + 1) * 2; @@ -564,7 +581,7 @@ static void IWrite(ARRAY(uint8_t)* buffer, plString value) } template<> -static void IWrite(ARRAY(uint8_t)* buffer, const NetVaultNode::Blob& blob) +static void IWrite(ARRAY(uint8_t)* buffer, const NetVaultNode::Blob& blob) { IWrite(buffer, static_cast(blob.size)); diff --git a/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.h b/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.h index b7a2d8da..1ffdeaa4 100644 --- a/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.h +++ b/Sources/Plasma/NucleusLib/pnNetProtocol/Private/pnNpCommon.h @@ -210,6 +210,8 @@ public: uint8_t* buffer; Blob() : size(0), buffer(nullptr) { } + Blob(const Blob &rhs); + Blob(Blob &&rhs); ~Blob() { delete[] buffer; } void operator =(const Blob& rhs);