* boot-9.scm (make-options): Bugfix: Changed pair? --> list? in
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Fri, 21 Aug 1998 08:06:03 +0000 (08:06 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Fri, 21 Aug 1998 08:06:03 +0000 (08:06 +0000)
order to allow the empty list as arg.
(error-catching-loop): Use `with-traps' to create a dynamic
context with traps enabled.

ice-9/boot-9.scm

index 13f1bcb..a060f3d 100644 (file)
        (make-options (lambda (interface)
                        `(lambda args
                           (cond ((null? args) (,interface))
-                                ((pair? (car args))
+                                ((list? (car args))
                                  (,interface (car args)) (,interface))
                                 (else (for-each ,print-option
                                                 (,interface #t)))))))
   (save-stack lazy-handler-dispatch)
   (apply throw key args))
 
+(define enter-frame-handler default-lazy-handler)
 (define apply-frame-handler default-lazy-handler)
 (define exit-frame-handler default-lazy-handler)
 
      (apply apply-frame-handler key args))
     ((exit-frame)
      (apply exit-frame-handler key args))
+    ((enter-frame)
+     (apply enter-frame-handler key args))
     (else
      (apply default-lazy-handler key args))))
 
                                    (dynamic-wind
                                     (lambda () (unmask-signals))
                                     (lambda ()
-                                      (first)
+                                      (with-traps
+                                       (lambda ()
+                                         (first)
                                       
-                                      ;; This line is needed because mark
-                                      ;; doesn't do closures quite right.
-                                      ;; Unreferenced locals should be
-                                      ;; collected.
-                                      ;;
-                                      (set! first #f)
-                                      (let loop ((v (thunk)))
-                                        (loop (thunk)))
-                                      #f)
+                                         ;; This line is needed because mark
+                                         ;; doesn't do closures quite right.
+                                         ;; Unreferenced locals should be
+                                         ;; collected.
+                                         ;;
+                                         (set! first #f)
+                                         (let loop ((v (thunk)))
+                                           (loop (thunk)))
+                                         #f)))
                                     (lambda () (mask-signals))))
 
                                  lazy-handler-dispatch))