1.0.14.40: make deftransforms for UB<N>-BASH-COPY have consistent return type
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 22 Feb 2008 16:54:48 +0000 (16:54 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 22 Feb 2008 16:54:48 +0000 (16:54 +0000)
 * Make REPLACE *CHECK-CONSISTENCY* happy: the transforms used to have
   return type (VALUES NULL &OPTIONAL), whereas the out-of-line
   definitions had return type (VALUES &OPTIONAL).

src/compiler/seqtran.lisp
tests/seq.pure.lisp
version.lisp-expr

index fa64712..3f70b07 100644 (file)
            (do ((i end (1- i)))
                ((<= i ,src-word))
              (setf (sb!kernel:%vector-raw-bits dst (1- i))
-                   (sb!kernel:%vector-raw-bits src (1- i)))))))))
+                   (sb!kernel:%vector-raw-bits src (1- i))))
+           (values))))))
 
 #.(loop for i = 1 then (* i 2)
         collect `(deftransform ,(intern (format nil "UB~D-BASH-COPY" i)
index 91b1971..fcba6c9 100644 (file)
   (multiple-value-bind (seq err) (ignore-errors (copy-seq '(1 2 3 . 4)))
     (assert (not seq))
     (assert (typep err 'type-error))))
+
+;;; UBX-BASH-COPY transform had an inconsistent return type
+(let ((sb-c::*check-consistency* t))
+  (handler-bind ((warning #'error))
+    (compile nil
+             '(lambda (l)
+               (declare (type fixnum l))
+               (let* ((bsize 128)
+                      (b1 (make-array bsize :element-type '(unsigned-byte 8)))
+                      (b2 (make-array l :element-type '(unsigned-byte 8))))
+                 (replace b1 b2 :start2 0 :end2 l))))))
index 3b66c06..7fc7541 100644 (file)
@@ -17,4 +17,4 @@
 ;;; 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".)
-"1.0.14.39"
+"1.0.14.40"