* And add testcase showing why the revert was needed.
--lose-on-corruption (which is still a good idea to use in production
because stack exhaustion can happen in signal handlers which will likely
lead to hangs.)
- * bug fix: a type error is signaled for attempts to use the LOOP
- keyword ACROSS for a NIL value. (thanks to Daniel Lowe)
* bug fix: fix gc related interrupt handling bug on ppc (regression from
1.0.25.37, reported by Harald Hanche-Olsen)
* bug fix: work around signal delivery bug in darwin (regression from
;;;; loop types
(defun loop-typed-init (data-type &optional step-var-p)
- (cond
- ((null data-type)
- nil)
- ((sb!xc:subtypep data-type 'number)
- (let ((init (if step-var-p 1 0)))
+ (when (and data-type (sb!xc:subtypep data-type 'number))
+ (let ((init (if step-var-p 1 0)))
(flet ((like (&rest types)
(coerce init (find-if (lambda (type)
(sb!xc:subtypep data-type type))
'(complex long-float)
'(complex float)))
(t
- init)))))
- ((sb!xc:subtypep data-type 'vector)
- (coerce nil data-type))
- (t
- nil)))
+ init))))))
(defun loop-optional-type (&optional variable)
;; No variable specified implies that no destructuring is permissible.
;;; Loop variable with a range excluding 0, reported by Andras Simon.
;;; (Used to signal an error during macroexpansion.)
(assert (not (loop with foo of-type (single-float 1.0 2.0) = 1.5 do (return))))
+
+;;; 1.0.26.12 used to signal a bogus type error for this.
+(loop with x of-type (simple-vector 1) = (make-array '(1))
+ repeat 1
+ return x)