From 6ac13b140fd3dca95f8b66cfed6b9ebaa4a5b7b8 Mon Sep 17 00:00:00 2001 From: skypjack Date: Thu, 29 Jan 2026 08:26:48 +0100 Subject: [PATCH] meta: avoid unnecessary allocations --- src/entt/meta/factory.hpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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(); } }