Ticket #117: bug-117.diff

File bug-117.diff, 897 bytes (added by Christian Kellermann, 14 years ago)

bugfix proposal

  • csi.scm

    diff --git a/csi.scm b/csi.scm
    index 5f424f6..dcf512e 100644
    a b  
    2626
    2727
    2828(declare
    29   (uses chicken-syntax srfi-69 ports extras)
     29  (uses chicken-syntax srfi-69 srfi-1 ports extras)
    3030  (usual-integrations)
    3131  (disable-interrupts)
    3232  (disable-warning var)
    EOF 
    525525                    (lambda ()
    526526                      (write (cadr plist) out) ) )
    527527                   (newline out) ) ) ) ]
     528            [(circular-list? x) (begin
     529                                  (fprintf out "circular list: ")
     530                                  (let loop-print ((x x)
     531                                                   (parsed '()))
     532                                    (if (not (memq (car x) parsed))
     533                                        (begin
     534                                          (fprintf out "~S -> " (car x))
     535                                          (loop-print (cdr x) (cons (car x) parsed)))
     536                                        (fprintf out " ~S (circle)~%" (car (memq (car x) parsed))))))]
    528537            [(list? x) (descseq "list" length list-ref 0)]
    529538            [(pair? x) (fprintf out "pair with car ~S and cdr ~S~%" (car x) (cdr x))]
    530539            [(procedure? x)