From 929d3f9bc91015c96ed7450349cf7a320a38ad01 Mon Sep 17 00:00:00 2001 From: "Pierre R. Mai" Date: Fri, 8 Oct 2010 20:14:37 +0200 Subject: [PATCH] Add work-around bit-stream-read-bits for ecl bug in (unsigned-byte 8) negation. The compiler in ecl version 10.7.1 generates erroneous code for the negation of bits in bit-stream-read-bits if bits is declared as an (unsigned-byte 8). Hence we declare bits as a (signed-byte 8) for ecl, given that ecl does not generate optimal code in either case, but correct code for the later case. --- deflate.lisp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deflate.lisp b/deflate.lisp index 377d3a3..67ec31d 100644 --- a/deflate.lisp +++ b/deflate.lisp @@ -287,7 +287,8 @@ (declaim (inline bit-stream-read-bits)) (defun bit-stream-read-bits (stream bits) - (declare (type bit-stream stream) (type (unsigned-byte 8) bits)) + (declare (type bit-stream stream) (type #-ecl (unsigned-byte 8) + #+ecl (signed-byte 8) bits)) "Read single or multiple bits from the given bit-stream." (loop while (< (bit-stream-bit-count stream) bits) do