From fcf3bdcac8ccf6f6f68759ebd9d643eab4d1625e Mon Sep 17 00:00:00 2001 From: Taeer Bar-Yam Date: Mon, 10 Nov 2025 20:42:28 +0100 Subject: [PATCH] move ExprAttrs data into Exprs::alloc --- src/libexpr/nixexpr.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/libexpr/nixexpr.cc b/src/libexpr/nixexpr.cc index 2bf77c477..3de5bdcb8 100644 --- a/src/libexpr/nixexpr.cc +++ b/src/libexpr/nixexpr.cc @@ -401,6 +401,17 @@ ExprAttrs::bindInheritSources(EvalState & es, const std::shared_ptr & env) { + // Move storage into the Exprs arena + { + auto arena = es.mem.exprs.alloc; + AttrDefs newAttrs{std::move(*attrs), arena}; + attrs.emplace(std::move(newAttrs), arena); + DynamicAttrDefs newDynamicAttrs{std::move(*dynamicAttrs), arena}; + dynamicAttrs.emplace(std::move(newDynamicAttrs), arena); + if (inheritFromExprs) + inheritFromExprs = std::make_unique>(std::move(*inheritFromExprs), arena); + } + if (es.debugRepl) es.exprEnvs.insert(std::make_pair(this, env));