From 4df33b759c5c48926ff99d73b98c7e848656db93 Mon Sep 17 00:00:00 2001 From: Pontus Fransson Date: Wed, 18 Dec 2013 00:04:25 +0100 Subject: [PATCH] Network - char[] unpacking. Fixed correct unpacking on char[]. Fixed not clearing string in translator unpack function. --- Code/Network/NetworkAPI/Translator.cpp | 4 +++- Code/Network/NetworkDependencies/Packing.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Code/Network/NetworkAPI/Translator.cpp b/Code/Network/NetworkAPI/Translator.cpp index e321f31e..6ae26a58 100644 --- a/Code/Network/NetworkAPI/Translator.cpp +++ b/Code/Network/NetworkAPI/Translator.cpp @@ -44,7 +44,7 @@ struct Translator::PrivateData headerString.push_back(it->second.type); } - message.PackShort(size, bytes); + message.PackShort(headerString.size(), bytes); size += 2; for(int i = 0; i < (int)headerString.size(); i++) @@ -221,6 +221,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/Packing.cpp b/Code/Network/NetworkDependencies/Packing.cpp index b6903a0a..0c1e642d 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; }