diff --git a/Code/Network/NetworkAPI/Translator.cpp b/Code/Network/NetworkAPI/Translator.cpp index 59ecdfd2..a23cdd5d 100644 --- a/Code/Network/NetworkAPI/Translator.cpp +++ b/Code/Network/NetworkAPI/Translator.cpp @@ -222,6 +222,8 @@ void Translator::Pack(OysterByte &bytes, CustomNetProtocol& protocol) bool Translator::Unpack(CustomNetProtocol& protocol, OysterByte &bytes) { + privateData->headerString.clear(); + if(!privateData->UnpackHeader(protocol, bytes)) { return false; diff --git a/Code/Network/NetworkDependencies/OysterByte.cpp b/Code/Network/NetworkDependencies/OysterByte.cpp index 7cbbde58..ac6923a2 100644 --- a/Code/Network/NetworkDependencies/OysterByte.cpp +++ b/Code/Network/NetworkDependencies/OysterByte.cpp @@ -60,13 +60,14 @@ unsigned char* OysterByte::GetByteArray() void OysterByte::AddSize(unsigned int size) { - int oldSize = this->size; - this->size += size; + int newCapacity = this->size + size; - if(this->size >= capacity) + if(newCapacity >= capacity) { - IncreaseCapacity(oldSize); + IncreaseCapacity(newCapacity); } + + this->size += size; } void OysterByte::SetBytes(unsigned char* bytes) @@ -113,17 +114,17 @@ OysterByte::operator unsigned char*() OysterByte& OysterByte::operator +=(const OysterByte& obj) { int newSize = this->size + obj.size; - + if(newSize >= (int)capacity) { - IncreaseCapacity(this->size); + IncreaseCapacity(newSize); } for(int i = size, j = 0; i < newSize; i++, j++) { this->byteArray[i] = obj.byteArray[j]; } - + this->size = newSize; return *this; @@ -133,12 +134,12 @@ OysterByte& OysterByte::operator +=(const OysterByte& obj) // Private // ///////////// -void OysterByte::IncreaseCapacity(unsigned int oldSize) +void OysterByte::IncreaseCapacity(unsigned int newCapacity) { - capacity = size * 2; + capacity = newCapacity * 2; unsigned char* temp = new unsigned char[capacity]; - for(int i = 0; i < (int)oldSize; i++) + for(int i = 0; i < (int)this->size; i++) { temp[i] = byteArray[i]; } diff --git a/Code/Network/NetworkDependencies/Packing.cpp b/Code/Network/NetworkDependencies/Packing.cpp index 5728cabe..41d059a3 100644 --- a/Code/Network/NetworkDependencies/Packing.cpp +++ b/Code/Network/NetworkDependencies/Packing.cpp @@ -282,7 +282,7 @@ namespace Oyster char* UnpackCStr(unsigned char buffer[]) { short len = UnpackS(buffer); - char* str = new char[len]; + char* str = new char[len+1]; buffer += 2; for(int i = 0; i < len; i++) @@ -290,6 +290,8 @@ namespace Oyster str[i] = buffer[i]; } + str[len] = '\0'; + return str; }