diff --git a/lib/base/value.hpp b/lib/base/value.hpp index 7a069c963..12885cbfe 100644 --- a/lib/base/value.hpp +++ b/lib/base/value.hpp @@ -99,12 +99,17 @@ public: if (IsEmpty()) return shared_ptr(); - shared_ptr object = dynamic_pointer_cast(boost::get(m_Value)); + Object::Ptr object = boost::get(m_Value); if (!object) + return shared_ptr(); + + shared_ptr tobject = dynamic_pointer_cast(object); + + if (!tobject) BOOST_THROW_EXCEPTION(std::bad_cast()); - return object; + return tobject; } bool IsEmpty(void) const;