mes: assq, assoc-ref: Handle non-A-LISTs.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 29 Apr 2018 14:17:07 +0000 (16:17 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 29 Apr 2018 14:17:07 +0000 (16:17 +0200)
* src/mes.c (assq): Return #f if A-LIST is not a list.
* module/mes/scm.mes (assoc): Likewise.

module/mes/scm.mes
src/mes.c

index 3aaac56d26b0fb4c6324cbc47c7527199ebaff36..9beac54b80b160ed2e0abeaeb612de7799992b58 100644 (file)
 (define assv-ref assq-ref)
 
 (define (assoc key alist)
-  (if (null? alist) #f
+  (if (not (pair? alist)) #f
       (if (equal? key (caar alist)) (car alist)
           (assoc key (cdr alist)))))
 
index 46544f7000344b02d84fb7dfad7a4c43eaf4d5e8..c0aae43317009edfeca5f6264d9e6b8d27f6bdb9 100644 (file)
--- a/src/mes.c
+++ b/src/mes.c
@@ -713,6 +713,8 @@ call (SCM fn, SCM x)
 SCM
 assq (SCM x, SCM a)
 {
+  if (TYPE (a) != TPAIR)
+    return cell_f;
   switch (TYPE (x))
     {
     case TCHAR: