diff options
author | eldritch horrors <pennae@lix.systems> | 2024-03-08 06:26:06 +0100 |
---|---|---|
committer | eldritch horrors <pennae@lix.systems> | 2024-03-09 03:37:35 -0700 |
commit | b6b31d255a32c98ce2df4d807601d9ee8a33f7ef (patch) | |
tree | 696a4045a63ebdab38b67e98e585d2aaa1024b32 | |
parent | 1bb8fe48a28665abdd63c82371cb2031f19eb1b1 (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.cc | 4 | ||||
-rw-r--r-- | tests/functional/repl.sh | 4 |
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; }; }' |