diff --git a/src/libexpr/include/nix/expr/nixexpr.hh b/src/libexpr/include/nix/expr/nixexpr.hh index 673c14cb3..8a6b02cc7 100644 --- a/src/libexpr/include/nix/expr/nixexpr.hh +++ b/src/libexpr/include/nix/expr/nixexpr.hh @@ -395,9 +395,9 @@ struct ExprAttrs : Expr } }; - typedef std::map AttrDefs; + typedef std::pmr::map AttrDefs; AttrDefs attrs; - std::unique_ptr> inheritFromExprs; + std::unique_ptr> inheritFromExprs; struct DynamicAttrDef { @@ -409,7 +409,7 @@ struct ExprAttrs : Expr , pos(pos) {}; }; - typedef std::vector DynamicAttrDefs; + typedef std::pmr::vector DynamicAttrDefs; DynamicAttrDefs dynamicAttrs; ExprAttrs(const PosIdx & pos) : recursive(false) diff --git a/src/libexpr/include/nix/expr/parser-state.hh b/src/libexpr/include/nix/expr/parser-state.hh index 9e1d17b53..e31635b57 100644 --- a/src/libexpr/include/nix/expr/parser-state.hh +++ b/src/libexpr/include/nix/expr/parser-state.hh @@ -181,7 +181,7 @@ ParserState::addAttr(ExprAttrs * attrs, AttrPath & attrPath, const Symbol & symb // See https://github.com/NixOS/nix/issues/9020. if (jAttrs && ae) { if (ae->inheritFromExprs && !jAttrs->inheritFromExprs) - jAttrs->inheritFromExprs = std::make_unique>(); + jAttrs->inheritFromExprs = std::make_unique>(); for (auto & ad : ae->attrs) { if (ad.second.kind == ExprAttrs::AttrDef::Kind::InheritedFrom) { auto & sel = dynamic_cast(*ad.second.e); diff --git a/src/libexpr/parser.y b/src/libexpr/parser.y index df700cab2..f56a695ec 100644 --- a/src/libexpr/parser.y +++ b/src/libexpr/parser.y @@ -423,7 +423,7 @@ binds1 | binds[accum] INHERIT '(' expr ')' attrs ';' { $$ = $accum; if (!$accum->inheritFromExprs) - $accum->inheritFromExprs = std::make_unique>(); + $accum->inheritFromExprs = std::make_unique>(); $accum->inheritFromExprs->push_back($expr); auto from = state->exprs.add(state->at(@expr), $accum->inheritFromExprs->size() - 1); for (auto & [i, iPos] : $attrs) {