aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2025-11-15 06:14:11 -0500
committerGravatar Peter McGoron 2025-11-15 06:14:11 -0500
commite6fff3a15c916693a6a5cea1f9ae861b13b1e530 (patch)
treefe89ff73f84b34fdd895bc04f6ba6bbc6308d6f2 /lib
parentuse srfi-146 when full srfi-225 is available for chibi (diff)
fix cycle counter
Diffstat (limited to 'lib')
-rw-r--r--lib/cuprate/implementation.sld42
-rw-r--r--lib/cuprate/implementation/alist-eq-map.scm2
2 files changed, 24 insertions, 20 deletions
diff --git a/lib/cuprate/implementation.sld b/lib/cuprate/implementation.sld
index 61849c1..f90e968 100644
--- a/lib/cuprate/implementation.sld
+++ b/lib/cuprate/implementation.sld
@@ -24,22 +24,26 @@
(cons vector? default-on-vector)
(cons error-object? default-on-error))))
(define (rewrite-enter rewriters obj)
- (letrec ((eq-map (make-eq-map))
- (rewrite
- (lambda (obj)
- (if (eq-map 'contains? obj)
- (eq-map 'cycle-counter obj)
- (begin
- (eq-map 'intern! obj)
- (let loop ((rewriters rewriters))
- (cond
- ((null? rewriters) obj)
- (((caar rewriters) obj)
- (let ((new-obj ((cdar rewriters) rewrite obj)))
- (if (eq-map 'cycle-used? obj)
- (list (eq-map 'cycle-counter)
- '=
- new-obj)
- new-obj)))
- (else (loop (cdr rewriters))))))))))
- (rewrite obj))))) \ No newline at end of file
+ (define eq-map (make-eq-map))
+ (define (loop obj rewriters)
+ (cond
+ ((null? rewriters) obj)
+ (((caar rewriters) obj)
+ (let ((new-obj ((cdar rewriters) rewrite obj)))
+ (if (eq-map 'cycle-used? obj)
+ (list (eq-map 'cycle-counter)
+ '=
+ new-obj)
+ new-obj)))
+ (else (loop obj (cdr rewriters)))))
+ (define (rewrite obj)
+ (cond
+ ((or (symbol? obj) (number? obj) (char? obj)
+ (null? obj) (boolean? obj))
+ obj)
+ ((eq-map 'contains? obj)
+ (eq-map 'cycle-counter obj))
+ (else
+ (eq-map 'intern! obj)
+ (loop obj rewriters))))
+ (rewrite obj)))) \ No newline at end of file
diff --git a/lib/cuprate/implementation/alist-eq-map.scm b/lib/cuprate/implementation/alist-eq-map.scm
index f9841e7..42097c0 100644
--- a/lib/cuprate/implementation/alist-eq-map.scm
+++ b/lib/cuprate/implementation/alist-eq-map.scm
@@ -4,7 +4,7 @@
(define counter 0)
(lambda (msg obj)
(case msg
- ((contains?) (assq obj alist))
+ ((contains?) (pair? (assq obj alist)))
((cycle-counter)
(set! interned-alist (cons obj interned-alist))
(let ((num (cdr (assq obj alist))))
?h=v2.0.9&id=670ce6c77a1a884cb8002e13cff380909dada3bc&follow=1'>Added libraw1394.postinst.in to list of distributed files.Gravatar aeb 3-3/+35 2000-11-23Add ldconfig in deb postinst for Debian policy conformance.Gravatar aeb 2-2/+17 2000-11-23Removed acconfig.h, which wasn't needed for some time.Gravatar aeb 1-13/+0 2000-11-22Added ieee1394.h header.Gravatar aeb 3-1/+38 2000-09-13Fix raw1394_start_iso_write() which uses wrong variable.Gravatar aeb 1-1/+1 2000-09-10Work around compiler warnings for int/ptr casts.Gravatar aeb 6-10/+20 2000-09-10Added control files for Debian packages.Gravatar aeb 6-8/+106 2000-09-01Added missing prototypes for iso send functions.Gravatar aeb 1-0/+7 2000-08-08Added raw1394_get_irm_id().Gravatar aeb 7-7/+39 2000-08-06Added support for isochronous sending.Gravatar aeb 3-0/+35 2000-07-05Added raw1394_reset_bus() call.Gravatar aeb 4-0/+23 2000-06-22- Set library version info in configure.in, use in src/Makefile.am.Gravatar aeb 4-2/+16 2000-06-15Update libtool version number.Gravatar aeb 2-2/+2 2000-06-14Added copyright headers.Gravatar aeb 6-0/+54 2000-06-11Added explicit AC_PROG_INSTALL call.Gravatar aeb 1-0/+1 2000-06-09Fix size of error field.Gravatar aeb 1-2/+2 2000-06-02Modified support for 32/64 bit environments, control struct fields have fixed...Gravatar aeb 7-43/+28 2000-05-28Added support for environments with 64 bit kernel and 32 bit userland.Gravatar aeb 8-7/+45 2000-04-27Fixed missing setting of ext code in raw1394_start_lock()Gravatar aeb 1-0/+1 2000-04-15Fixed lock transaction to actually return response value.Gravatar aeb 3-5/+11 2000-04-12Add userdata functions as news.Gravatar aeb 1-0/+4 2000-04-05Add userdata functions.Gravatar aeb 3-0/+18 2000-03-18Bump version number to 0.6.Gravatar aeb 3-5/+6 2000-03-18Mention byte order change.Gravatar aeb 1-0/+2 2000-03-18Mention SourceForge home.Gravatar aeb 1-1/+5