Juho Snellman <jsnell@...> writes:
> Ah, I forgot to mention that the code at that paste won't work with a
> vanilla SBCL, since the code for handling (u-b 64) streams with the
> correct endianity is missing. You need to add the following into
> src/code/fd-stream.lisp, along with the other def-output-routines
> forms.
>
> (def-output-routines ("OUTPUT-UNSIGNED-LONG-~A-BUFFERED"
> 8
> nil
> (:none (unsigned-byte 64))
> (:full (unsigned-byte 64)))
> (setf (sap-ref-64 (fd-stream-obuf-sap stream) (fd-stream-obuf-tail stream))
> byte))
>
> (def-output-routines ("OUTPUT-SIGNED-LONG-~A-BUFFERED"
> 8
> nil
> (:none (signed-byte 64))
> (:full (signed-byte 64)))
> (setf (signed-sap-ref-64 (fd-stream-obuf-sap stream)
> (fd-stream-obuf-tail stream))
> byte))
This solves it, thanks! I had to comment out the original definitions
because I got
; compiling (DEF-OUTPUT-ROUTINES ("OUTPUT-SIGNED-LONG-~A-BUFFERED" 4
...) ...)
; compiling (DEF-OUTPUT-ROUTINES ("OUTPUT-UNSIGNED-LONG-~A-BUFFERED" 8
...) ...)
debugger invoked on a SIMPLE-TYPE-ERROR in thread #<THREAD "initial
thread" {1002318131}>:
Bad type argument:
DUPLICATE-DEFINITION
Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.
restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.
(MAKE-CONDITION DUPLICATE-DEFINITION)
0]
while compiling sbcl.
Will this change be committed to cvs, or is it just a hack for this
particular purpose that might break other things?
Andras
|