aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/nix-daemon/nix-daemon.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/nix-daemon/nix-daemon.cc b/src/nix-daemon/nix-daemon.cc
index 63b5eb87d..0feafb013 100644
--- a/src/nix-daemon/nix-daemon.cc
+++ b/src/nix-daemon/nix-daemon.cc
@@ -477,11 +477,13 @@ static void performOp(TunnelLogger * logger, ref<Store> store,
logger->startWork();
Roots roots = store->findRoots();
logger->stopWork();
+
+ // Pre-compute roots length using same algo as below.
size_t total_length = 0;
bool hasMemoryLink;
- for (auto & [target, links] : roots) {
+ for (auto & root : roots) {
hasMemoryLink = false;
- for (auto & link : links) {
+ for (auto & link : root.second) {
if (link.rfind("{memory:", 0) == 0) {
if (hasMemoryLink) continue;
++total_length;
@@ -491,6 +493,7 @@ static void performOp(TunnelLogger * logger, ref<Store> store,
}
}
}
+
to << total_length;
int n = 0;
for (auto & [target, links] : roots) {