1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-03 18:50:19 +02:00

* syncase.scm (gensym): fix bad let.

This commit is contained in:
Rob Browning 2002-03-04 14:53:35 +00:00
parent 2d17159f2e
commit 4d1c1da728

View file

@ -170,23 +170,24 @@
(let ((counter 0)
(symlock (make-mutex)))
(lambda (. rest)
(lock-mutex symlock)
(let* ((val (number->string counter))
(result
(set! counter (+ counter 1))
(cond
((null? rest)
(string->symbol (string-append "syntmp-" val)))
((null? (cdr rest))
(string->symbol (string-append "syntmp-" (car rest) "-" val)))
(else
'bad-args))))
(let ((counter-val #f))
(lock-mutex symlock)
(set! counter-val counter)
(set! counter (+ counter 1))
(unlock-mutex symlock)
(if (eq? result 'bad-args)
(error
"syncase's gensym called with the wrong number of arguments")
result)))))
(let* ((valstr (number->string counter-val)))
(cond
((null? rest)
(string->symbol (string-append "syntmp-" valstr)))
((null? (cdr rest))
(string->symbol (string-append "syntmp-" (car rest) "-" valstr)))
(else
(if (eq? result 'bad-args)
(error
(string-append
"syncase's gensym expected 0 or 1 arguments, got "
(length rest)))))))))))
;;; Load the preprocessed code
(let ((old-debug #f)