summaryrefslogtreecommitdiffstats
path: root/src/Net/Packets/ErrorPacket.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-09-19 11:15:14 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-09-19 11:15:14 +0200
commit113b1f4bbdecfab24ed9781b730a76a442adad6f (patch)
treee28f5c9a7a1afebd7d920f1006aacff401894dbc /src/Net/Packets/ErrorPacket.cpp
parent793a0789858734141dfa12d2ab3dd6ea3ed293e8 (diff)
downloadmad-113b1f4bbdecfab24ed9781b730a76a442adad6f.tar
mad-113b1f4bbdecfab24ed9781b730a76a442adad6f.zip
Exceptions vereinheitlicht
Diffstat (limited to 'src/Net/Packets/ErrorPacket.cpp')
-rw-r--r--src/Net/Packets/ErrorPacket.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/Net/Packets/ErrorPacket.cpp b/src/Net/Packets/ErrorPacket.cpp
index 2a72415..28d364a 100644
--- a/src/Net/Packets/ErrorPacket.cpp
+++ b/src/Net/Packets/ErrorPacket.cpp
@@ -18,6 +18,7 @@
*/
#include "ErrorPacket.h"
+#include <cstring>
namespace Mad {
namespace Net {
@@ -26,18 +27,22 @@ namespace Packets {
ErrorPacket::ErrorPacket(Type type, uint16_t requestId, const Common::Exception &exception)
: Packet(type, requestId)
{
- setLength(sizeof(ErrorData));
+ setLength(sizeof(ErrorData) + exception.getWhere().length());
errorData = (ErrorData*)&rawData->data;
errorData->errorCode = htonl(exception.getErrorCode());
errorData->subCode = htonl(exception.getSubCode());
errorData->subSubCode = htonl(exception.getSubSubCode());
+
+ std::memcpy(errorData->where, exception.getWhere().c_str(), exception.getWhere().length());
}
ErrorPacket& ErrorPacket::operator=(const Packet &p) {
Packet::operator=(p);
- setLength(sizeof(ErrorData));
+ if(getLength() < sizeof(ErrorData))
+ setLength(sizeof(ErrorData));
+
errorData = (ErrorData*)&rawData->data;
return *this;