summaryrefslogtreecommitdiffstats
path: root/src/NBT/Tag.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2015-02-01 04:14:42 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2015-02-01 04:14:42 +0100
commit8a8a41a800dfe9bdcab934d6b53d9c6defd4a457 (patch)
treef9d40b96ee3413cbe7a402a4b4abad607b2a1c7c /src/NBT/Tag.cpp
parentfc1fc8fbbc9dd9534f40de348210ea66b6defe42 (diff)
downloadMinedMap-8a8a41a800dfe9bdcab934d6b53d9c6defd4a457.tar
MinedMap-8a8a41a800dfe9bdcab934d6b53d9c6defd4a457.zip
Parse chunk data on demand
Diffstat (limited to 'src/NBT/Tag.cpp')
-rw-r--r--src/NBT/Tag.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/NBT/Tag.cpp b/src/NBT/Tag.cpp
index 1829dc5..c75cb9f 100644
--- a/src/NBT/Tag.cpp
+++ b/src/NBT/Tag.cpp
@@ -90,7 +90,7 @@ std::shared_ptr<const Tag> Tag::readTag(Type type, Buffer *buffer) {
}
std::shared_ptr<const Tag> Tag::readList(Buffer *buffer) {
- Type type = static_cast<Type>(buffer->get());
+ Type type = static_cast<Type>(buffer->get8());
switch (type) {
case Type::End:
@@ -135,13 +135,12 @@ std::shared_ptr<const Tag> Tag::readList(Buffer *buffer) {
}
std::pair<std::string, std::shared_ptr<const Tag>> Tag::readNamedTag(Buffer *buffer) {
- Type type = static_cast<Type>(buffer->get());
+ Type type = static_cast<Type>(buffer->get8());
if (type == Type::End)
return std::make_pair("", std::shared_ptr<EndTag>(new EndTag()));
- uint16_t len = buffer->get() << 8;
- len |= buffer->get();
- std::string name = buffer->getString(len);
+ uint16_t len = buffer->get16();
+ std::string name(reinterpret_cast<const char*>(buffer->get(len)), len);
return std::make_pair(name, readTag(type, buffer));
}