diff options
author | Robert Hensing <robert@roberthensing.nl> | 2023-04-01 22:05:06 +0200 |
---|---|---|
committer | Robert Hensing <robert@roberthensing.nl> | 2023-04-03 15:32:42 +0200 |
commit | 1c55544a428c61448dcaa4b431f20bde52c3991e (patch) | |
tree | 3e2b48eadf21d360a774b34bdd97d43949c4a65c /src | |
parent | 10dc2e2e7cc28276c989b72a3a98c4b5542211e4 (diff) |
eval: Fix crash on missing printValue tBlackhole case
Fixes #8119
Diffstat (limited to 'src')
-rw-r--r-- | src/libexpr/eval.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc index 584bbc879..22337a3ff 100644 --- a/src/libexpr/eval.cc +++ b/src/libexpr/eval.cc @@ -173,7 +173,17 @@ void Value::print(const SymbolTable & symbols, std::ostream & str, case tFloat: str << fpoint; break; + case tBlackhole: + // Although we know for sure that it's going to be an infinite recursion + // when this value is accessed _in the current context_, it's likely + // that the user will misinterpret a simpler «infinite recursion» output + // as a definitive statement about the value, while in fact it may be + // a valid value after `builtins.trace` and perhaps some other steps + // have completed. + str << "«potential infinite recursion»"; + break; default: + printError("Nix evaluator internal error: Value::print(): invalid value type %1%", internalType); abort(); } } |