Commit 30f66192 authored by Frode Vatvedt Fjeld's avatar Frode Vatvedt Fjeld

Avoid recursive error if *break-on-signals* is not a type-specifier.

parent 73dfa9a6
......@@ -10,7 +10,7 @@
;;;; Author: Frode Vatvedt Fjeld <frodef@acm.org>
;;;; Created at: Wed Nov 20 15:47:04 2002
;;;;
;;;; $Id: conditions.lisp,v 1.20 2006/05/06 20:29:08 ffjeld Exp $
;;;; $Id: conditions.lisp,v 1.21 2006/05/07 18:47:14 ffjeld Exp $
;;;;
;;;;------------------------------------------------------------------
......@@ -242,18 +242,19 @@ Return the condition object, if there was one."
(cpl (class-precedence-list class))
(condition nil)
(bos-type *break-on-signals*))
(let ((*break-on-signals* nil)) ; avoid recursive error if *b-o-s* is faulty.
(when (typecase bos-type
(null nil)
(symbol
(let ((bos-class (find-class bos-type nil)))
(if (not bos-class)
(typep (class-prototype-value class) bos-type)
(member bos-class cpl))))
(list
(typep (class-prototype-value class) bos-type))
(t (member bos-type cpl)))
(break "Signalling ~S" datum)))
(with-simple-restart (continue "Ignore *break-on-signals*.")
(let ((*break-on-signals* nil)) ; avoid recursive error if *b-o-s* is faulty.
(when (typecase bos-type
(null nil)
(symbol
(let ((bos-class (find-class bos-type nil)))
(if (not bos-class)
(typep (class-prototype-value class) bos-type)
(member bos-class cpl))))
(list
(typep (class-prototype-value class) bos-type))
(t (member bos-type cpl)))
(break "Signalling ~S" datum))))
(macrolet ((invoke-handler (handler)
`(funcall ,handler
(or condition
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment