diff --git a/src/entt/meta/factory.hpp b/src/entt/meta/factory.hpp index aa2c89863..f45aab21e 100644 --- a/src/entt/meta/factory.hpp +++ b/src/entt/meta/factory.hpp @@ -122,10 +122,12 @@ protected: public: basic_meta_factory(meta_ctx &area, meta_type_node node) : ctx{&area}, - bucket{node.info->hash()}, - parent{meta_context::from(*ctx).bucket.try_emplace(node.info->hash(), std::make_unique(std::move(node))).first->second.get()} { - if(parent->details == nullptr) { + bucket{node.info->hash()} { + if(const auto it = meta_context::from(*ctx).bucket.find(bucket); it == meta_context::from(*ctx).bucket.cend()) { + parent = meta_context::from(*ctx).bucket.emplace(node.info->hash(), std::make_unique(std::move(node))).first->second.get(); parent->details = std::make_unique(); + } else { + parent = it->second.get(); } }