"Execute the body, asynchronously interrupting it and signalling a
TIMEOUT condition after at least EXPIRES seconds have passed."
(with-unique-names (timer)
- `(let ((,timer (make-timer (lambda ()
- (cerror "Continue" 'sb!ext::timeout)))))
- (schedule-timer ,timer ,expires)
- (unwind-protect
- (progn ,@body)
- (unschedule-timer ,timer)))))
+ ;; FIXME: a temporary compatibility workaround for CLX, if unsafe
+ ;; unwinds are handled revisit it.
+ `(if (> ,expires 0)
+ (let ((,timer (make-timer (lambda ()
+ (cerror "Continue" 'sb!ext::timeout)))))
+ (schedule-timer ,timer ,expires)
+ (unwind-protect
+ (progn ,@body)
+ (unschedule-timer ,timer)))
+ (progn ,@body))))
(in-package "MOP-6")
;;; COMPUTE-SLOTS :AROUND respecting requested order
-(defclass slot-rearrangement-class (standard-class)
+(defclass slot-rearrangement-class (standard-class)
())
(defmethod compute-slots ((c slot-rearrangement-class))
(reverse (call-next-method)))
(with-test (:name (compute-slots standard-class :order))
(let ((class (find-class 'rearranged-class)))
(finalize-inheritance class)
- (assert (equal (mapcar #'slot-definition-name (class-slots class))
+ (assert (equal (mapcar #'slot-definition-name (class-slots class))
'(b a)))))
(with-test (:name (compute-slots standard-class :slots))
(let ((r (make-instance 'rearranged-class))
(with-test (:name (compute-slots funcallable-standard-class :order))
(let ((class (find-class 'funcallable-rearranged-class)))
(finalize-inheritance class)
- (assert (equal (mapcar #'slot-definition-name (class-slots class))
+ (assert (equal (mapcar #'slot-definition-name (class-slots class))
'(b a)))))
(with-test (:name (compute-slots funcallable-standard-class :slots))
(let ((r (make-instance 'funcallable-rearranged-class))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.4.75"
+"0.9.4.76"