From 39db801f93a3248743f6351a4efcd6b0794beba3 Mon Sep 17 00:00:00 2001 From: Mark Samman Date: Mon, 30 Jul 2012 18:26:36 +0200 Subject: [PATCH] Fixed 9.6 otb loading --- src/framework/core/binarytree.cpp | 11 +++++++++++ src/framework/core/binarytree.h | 1 + src/otclient/itemtype.cpp | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/framework/core/binarytree.cpp b/src/framework/core/binarytree.cpp index ea5a96bb..c4b09f8f 100644 --- a/src/framework/core/binarytree.cpp +++ b/src/framework/core/binarytree.cpp @@ -163,6 +163,17 @@ std::string BinaryTree::getString() return ret; } +std::string BinaryTree::getString(uint16 len) +{ + unserialize(); + if(m_pos+len > m_buffer.size()) + stdext::throw_exception("BinaryTree: getString failed: string length exceeded buffer size."); + + std::string ret((char *)&m_buffer[m_pos], len); + m_pos += len; + return ret; +} + Position BinaryTree::getPosition() { Position ret; diff --git a/src/framework/core/binarytree.h b/src/framework/core/binarytree.h index 7adabf16..423df6aa 100644 --- a/src/framework/core/binarytree.h +++ b/src/framework/core/binarytree.h @@ -49,6 +49,7 @@ public: uint32 getU32(); uint64 getU64(); std::string getString(); + std::string getString(uint16 len); Position getPosition(); Point getPoint(); diff --git a/src/otclient/itemtype.cpp b/src/otclient/itemtype.cpp index 4bb2feb4..e568c395 100644 --- a/src/otclient/itemtype.cpp +++ b/src/otclient/itemtype.cpp @@ -64,7 +64,7 @@ void ItemType::unserialize(const BinaryTreePtr& node) break; } case ItemTypeAttrName: { - setName(node->getString()); + setName(node->getString(len)); break; } case ItemTypeAttrDesc: {