Index: /trunk/source/objc-bridge/objc-runtime.lisp
===================================================================
--- /trunk/source/objc-bridge/objc-runtime.lisp	(revision 13699)
+++ /trunk/source/objc-bridge/objc-runtime.lisp	(revision 13700)
@@ -2962,4 +2962,12 @@
     (#_memmove return-temp value size)))
 
+
+(defvar *objc-error-return-condition* 'condition
+  "Type of conditions to be caught by objc:defmethod and resignalled as objc exceptions,
+   allowing handlers for them to safely take a non-local exit despite possible intervening ObjC
+   frames.   The resignalling unwinds the stack before the handler is invoked, which can be
+   a problem for some handlers.")
+
+
 (defmacro objc:defmethod (name (self-arg &rest other-args) &body body &environment env)
   (collect ((arglist)
@@ -3060,5 +3068,5 @@
                  ',result-type
                  ',(cddr arg-types))
-                (defcallback ,impname ( :error-return (condition objc-callback-error-return) ,@(arglist))
+                (defcallback ,impname ( :error-return (,*objc-error-return-condition* objc-callback-error-return) ,@(arglist))
                   (declare (ignorable ,self-name)
                            (unsettable ,self-name)
