Error handling on failing set!.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 30 Oct 2016 14:38:27 +0000 (15:38 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Mon, 12 Dec 2016 19:33:49 +0000 (20:33 +0100)
* mes.c (set_env_x): Produce error message [WAS: dump core].

mes.c

diff --git a/mes.c b/mes.c
index ca38633c53d106166520a87e62557288826c7e3a..8249ae4dd18d98ef0136a566007c39d6a915bc8c 100644 (file)
--- a/mes.c
+++ b/mes.c
@@ -194,7 +194,15 @@ scm *
 set_env_x (scm *x, scm *e, scm *a)
 {
   cache_invalidate (x);
-  return set_cdr_x (assq (x, a), e);
+  scm *p = assq (x, a);
+  if (p->type != PAIR)
+    {
+      fprintf (stderr, "set!: unbound variable:");
+      display_ (stderr, x);
+      fprintf (stderr, "\n");
+      assert (!"unbound variable");
+    }
+  return set_cdr_x (p, e);
 }
 
 scm *