diff --git a/src/libstore/store-api.cc b/src/libstore/store-api.cc index d7b784cfb..db2e023ab 100644 --- a/src/libstore/store-api.cc +++ b/src/libstore/store-api.cc @@ -795,33 +795,27 @@ static RegisterStoreImplementation regStore([]( std::list> getDefaultSubstituters() { - struct State { - bool done = false; + static auto stores([]() { std::list> stores; - }; - static Sync state_; - auto state(state_.lock()); + StringSet done; - if (state->done) return state->stores; + auto addStore = [&](const std::string & uri) { + if (done.count(uri)) return; + done.insert(uri); + stores.push_back(openStore(uri)); + }; - StringSet done; + for (auto uri : settings.substituters.get()) + addStore(uri); - auto addStore = [&](const std::string & uri) { - if (done.count(uri)) return; - done.insert(uri); - state->stores.push_back(openStore(uri)); - }; + for (auto uri : settings.extraSubstituters.get()) + addStore(uri); - for (auto uri : settings.substituters.get()) - addStore(uri); + return stores; + } ()); - for (auto uri : settings.extraSubstituters.get()) - addStore(uri); - - state->done = true; - - return state->stores; + return stores; }