>>>>> "WP" == Walter C Pelissero <[EMAIL PROTECTED]> writes:

    WP> On 19D the following code will cause an error:
    WP> * (defun test-string-stream ()
    WP>   (with-output-to-string (stream)
    WP>     (dotimes (x 17)
    WP>       (write-string (make-string (* 1024 1024)) stream)))
    WP>   (values))

Thanks for the neat bug.

[snip]

    WP> The following code gets rid of the bug in the string streams, although
    WP> there may be a more serious error somewhere else, as I haven't been
    WP> able to track down the call to BIT-BASH-COPY.

BIT-BASH-COPY is called because of a DEFTRANSFORM for REPLACE, which
is used in string-sout.

    WP> (in-package :lisp)

Thanks for the replacement.  The only possible issue with the
replacement would be performance.  BIT-BASH-COPY tries pretty hard to
do word copies.  And BIT-BASH-COPY is intended to be able to copy
arbitrary bit strings.  I don't know why it's limited to
(unsigned-byte 27) offsets.  Perhaps to make sure the bit index stays
as a 32-bit int?

And since the transform for REPLACE operates on simple strings, we
could probably just call out to memcpy and depend on the OS to have an
efficient implementation of memcpy, which is probably true these days.

Ray

Reply via email to