From d9226363114d446f5af0f53345be8811a3ed8d42 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 1 Feb 2015 05:18:51 +0100 Subject: Don't throw an exception when a compound field is not found --- src/NBT/CompoundTag.hpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/NBT/CompoundTag.hpp b/src/NBT/CompoundTag.hpp index 28efc41..39fa25d 100644 --- a/src/NBT/CompoundTag.hpp +++ b/src/NBT/CompoundTag.hpp @@ -54,13 +54,15 @@ public: return Type::Compound; } - template - std::shared_ptr get(const std::string &key) const { - return std::dynamic_pointer_cast(at(key)); + template std::shared_ptr get(const std::string &key) const { + auto it = find(key); + if (it == end()) + return std::shared_ptr(); + + return std::dynamic_pointer_cast(it->second); } - template - std::shared_ptr get(const std::string &key, const Args &...args) const { + template std::shared_ptr get(const std::string &key, const Args &...args) const { std::shared_ptr tag = get(key); if (!tag) return std::shared_ptr(); -- cgit v1.2.3