10 Sep 2007 Kevin Rosenberg <kevin@rosenberg.net>
[kmrcl.git] / byte-stream.lisp
index 6e785fa2fa90d883ce1aca8ba3f784151f4fdf44..e3036074a00034224864fd7b3dfcef8767a98ff8 100644 (file)
@@ -241,21 +241,22 @@ Make-Byte-Array-Output-Stream since the last call to this function."
       (replace result (slot-value stream 'excl::buffer))
       result))
 
-  (defmethod excl:device-extend ((stream extendable-buffer-output-stream)
-                                 need action)
-    (declare (ignore action))
-    (let* ((len (file-position stream))
-           (new-len (max (+ len need) (* 2 len)))
-           (old-buf (slot-value stream 'excl::buffer))
-           (new-buf (make-array new-len :element-type '(unsigned-byte 8))))
-      (declare (fixnum len)
-               (optimize (speed 3) (safety 0)))
-      (dotimes (i len)
-        (setf (aref new-buf i) (aref old-buf i)))
-      (setf (slot-value stream 'excl::buffer) new-buf)
-      (setf (slot-value stream 'excl::buffer-ptr) new-len)
-      )
-    t)
+  (excl::without-package-locks
+   (defmethod excl:device-extend ((stream extendable-buffer-output-stream)
+                                  need action)
+     (declare (ignore action))
+     (let* ((len (file-position stream))
+            (new-len (max (+ len need) (* 2 len)))
+            (old-buf (slot-value stream 'excl::buffer))
+            (new-buf (make-array new-len :element-type '(unsigned-byte 8))))
+       (declare (fixnum len)
+                (optimize (speed 3) (safety 0)))
+       (dotimes (i len)
+         (setf (aref new-buf i) (aref old-buf i)))
+       (setf (slot-value stream 'excl::buffer) new-buf)
+       (setf (slot-value stream 'excl::buffer-ptr) new-len)
+       )
+     t))
 
 )