diff --git a/lib/inc/drogon/DrClassMap.h b/lib/inc/drogon/DrClassMap.h index d5a3f256..bc07b1a2 100755 --- a/lib/inc/drogon/DrClassMap.h +++ b/lib/inc/drogon/DrClassMap.h @@ -15,6 +15,7 @@ #pragma once #include +#include #include #include #include @@ -31,7 +32,7 @@ class DrObjectBase; typedef std::function DrAllocFunc; class DrClassMap { - public: +public: static void registerClass(const std::string &className, const DrAllocFunc &func); static DrObjectBase *newObject(const std::string &className); static const std::shared_ptr &getSingleInstance(const std::string &className); @@ -49,10 +50,15 @@ class DrClassMap int status = 0; std::unique_ptr ptr( __cxxabiv1::__cxa_demangle(mangled_name, nullptr, &len, &status), &std::free); - return ptr.get(); + if (status == 0) + { + return std::string(ptr.get()); + } + LOG_ERROR << "Demangle error!"; + return ""; } - protected: +protected: static std::unordered_map &getMap(); };