1
0
Fork 0
mirror of https://github.com/NixOS/nix synced 2025-06-27 21:01:16 +02:00

Simplify RegisterBuiltinBuilder

This commit is contained in:
Eelco Dolstra 2025-05-05 08:16:09 +02:00
parent c7a84b9160
commit 1479305001
2 changed files with 7 additions and 7 deletions

View file

@ -19,12 +19,15 @@ using BuiltinBuilder = std::function<void(const BuiltinBuilderContext &)>;
struct RegisterBuiltinBuilder struct RegisterBuiltinBuilder
{ {
typedef std::map<std::string, BuiltinBuilder> BuiltinBuilders; typedef std::map<std::string, BuiltinBuilder> BuiltinBuilders;
static BuiltinBuilders * builtinBuilders;
static BuiltinBuilders & builtinBuilders() {
static BuiltinBuilders builders;
return builders;
}
RegisterBuiltinBuilder(const std::string & name, BuiltinBuilder && fun) RegisterBuiltinBuilder(const std::string & name, BuiltinBuilder && fun)
{ {
if (!builtinBuilders) builtinBuilders = new BuiltinBuilders; builtinBuilders().insert_or_assign(name, std::move(fun));
builtinBuilders->insert_or_assign(name, std::move(fun));
} }
}; };

View file

@ -1835,9 +1835,6 @@ void setupSeccomp()
} }
RegisterBuiltinBuilder::BuiltinBuilders * RegisterBuiltinBuilder::builtinBuilders = nullptr;
void DerivationBuilderImpl::runChild() void DerivationBuilderImpl::runChild()
{ {
/* Warning: in the child we should absolutely not make any SQLite /* Warning: in the child we should absolutely not make any SQLite
@ -2298,7 +2295,7 @@ void DerivationBuilderImpl::runChild()
std::string builtinName = drv.builder.substr(8); std::string builtinName = drv.builder.substr(8);
assert(RegisterBuiltinBuilder::builtinBuilders); assert(RegisterBuiltinBuilder::builtinBuilders);
if (auto builtin = get(*RegisterBuiltinBuilder::builtinBuilders, builtinName)) if (auto builtin = get(RegisterBuiltinBuilder::builtinBuilders(), builtinName))
(*builtin)(ctx); (*builtin)(ctx);
else else
throw Error("unsupported builtin builder '%1%'", builtinName); throw Error("unsupported builtin builder '%1%'", builtinName);