From 345cdfb7b9ba7eec98f0378530cd05074999877b Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sun, 7 Aug 2022 15:50:58 -0700 Subject: Fix a bug in the records library. We have to check if it's a pointer before dereferencing. --- lib/scheme/base/50-records.csc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/scheme/base/50-records.csc b/lib/scheme/base/50-records.csc index 2830b3c..e0954d3 100644 --- a/lib/scheme/base/50-records.csc +++ b/lib/scheme/base/50-records.csc @@ -80,7 +80,8 @@ (let ((id *next-type-id*)) (set! *next-type-id* (call-builtin + 1 *next-type-id*)))) (define (pred r) - (call-builtin eq? type-id (call-builtin peek r 0))) + (and (call-builtin eq? 0 (call-builtin typeof r)) + (call-builtin eq? type-id (call-builtin peek r 0)))) (define (constructor field ...) (define r (call-builtin alloc (macro-length (field ...)))) (call-builtin poke type-id r 0) -- cgit v1.3.1