aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-03-08 06:26:06 +0100
committereldritch horrors <pennae@lix.systems>2024-03-09 03:37:35 -0700
commitb6b31d255a32c98ce2df4d807601d9ee8a33f7ef (patch)
tree696a4045a63ebdab38b67e98e585d2aaa1024b32
parent1bb8fe48a28665abdd63c82371cb2031f19eb1b1 (diff)
Merge pull request #9926 from 9999years/fix-cycle-detection-in-nix-repl
Fix cycle detection in `nix repl` (cherry picked from commit e190c20c3394fd1a5cd9be1afc3f30ab32dcd36b) Change-Id: Ie385e781b9f0b7171ca653bcd53a990bb41f9e4b
-rw-r--r--src/libexpr/print.cc4
-rw-r--r--tests/functional/repl.sh4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/libexpr/print.cc b/src/libexpr/print.cc
index 139568b5e..c04278a0e 100644
--- a/src/libexpr/print.cc
+++ b/src/libexpr/print.cc
@@ -150,7 +150,7 @@ struct ImportantFirstAttrNameCmp
}
};
-typedef std::set<Value *> ValuesSeen;
+typedef std::set<const void *> ValuesSeen;
class Printer
{
@@ -260,7 +260,7 @@ private:
void printAttrs(Value & v, size_t depth)
{
- if (seen && !seen->insert(&v).second) {
+ if (seen && !seen->insert(v.attrs).second) {
printRepeated();
return;
}
diff --git a/tests/functional/repl.sh b/tests/functional/repl.sh
index bb8b60e50..0921edc0f 100644
--- a/tests/functional/repl.sh
+++ b/tests/functional/repl.sh
@@ -161,7 +161,7 @@ testReplResponseNoRegex '
# Same for let expressions
testReplResponseNoRegex '
let x = { y = { a = 1; }; inherit x; }; in x
-' '{ x = { ... }; y = { ... }; }'
+' '{ x = «repeated»; y = { ... }; }'
# The :p command should recursively print sets, but prevent infinite recursion
testReplResponseNoRegex '
@@ -176,4 +176,4 @@ testReplResponseNoRegex '
# Same for let expressions
testReplResponseNoRegex '
:p let x = { y = { a = 1; }; inherit x; }; in x
-' '{ x = { x = «repeated»; y = { a = 1; }; }; y = «repeated»; }'
+' '{ x = «repeated»; y = { a = 1; }; }'