From bb2a3bb031e04560e2e6469e2071264d4976657c Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Wed, 10 Aug 2016 17:50:56 -0400 Subject: [PATCH] Issue #90 - Check for `cdr` being a value type Also cleaned up the display/write pair printing code a bit by using Cyc_is_pair. --- runtime.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime.c b/runtime.c index 9b43354c..bdc7d0c8 100644 --- a/runtime.c +++ b/runtime.c @@ -751,7 +751,7 @@ object Cyc_display(object x, FILE * port) break; } - for (tmp = cdr(x); tmp && ((closure) tmp)->tag == pair_tag; tmp = cdr(tmp)) { + for (tmp = cdr(x); Cyc_is_pair(tmp) == boolean_t; tmp = cdr(tmp)) { if (has_cycle == boolean_t) { if (i++ > 20) break; /* arbitrary number, for now */ @@ -875,7 +875,7 @@ static object _Cyc_write(object x, FILE * port) break; } - for (tmp = cdr(x); tmp && !is_value_type(tmp) && ((closure) tmp)->tag == pair_tag; tmp = cdr(tmp)) { + for (tmp = cdr(x); Cyc_is_pair(tmp) == boolean_t; tmp = cdr(tmp)) { if (has_cycle == boolean_t) { if (i++ > 20) break; /* arbitrary number, for now */