about summary refs log tree commit diff stats
path: root/shell/print.mu
diff options
context:
space:
mode:
Diffstat (limited to 'shell/print.mu')
-rw-r--r--shell/print.mu8
1 files changed, 7 insertions, 1 deletions
diff --git a/shell/print.mu b/shell/print.mu
index 542c59a4..1658ec07 100644
--- a/shell/print.mu
+++ b/shell/print.mu
@@ -205,7 +205,13 @@ fn print-pair _in: (addr cell), out: (addr stream byte), trace: (addr trace) {
     {
       compare right-addr, 0
       break-if-!=
-      abort "null encountered"
+      # This shouldn't ever happen in a regular REPL cycle.
+      # However, we also use print-cell when emitting the trace. And that can
+      # happen after there's been an error in the trace.
+      write out, "...NULL!"
+      error trace, "right is NULL"
+      trace-higher trace
+      return
     }
     {
       var right-nil?/eax: boolean <- nil? right-addr