Custom Query (1030 matches)
Results (610 - 612 of 1030)
| Ticket | Resolution | Summary | Owner | Reporter |
|---|---|---|---|---|
| #786 | fixed | Read-char-no-hang sometimes hangs | ||
| Description |
Read-char-no-hang is supposed to return NIL if there is no more input available from the stream. But it hangs in the following particular example, when it's trying to read from the output stream of an external program, and that stream is still open but there's nothing on it: ? (defparameter *cat-process*
(run-program "cat" nil
:input :stream
:output :stream
:wait nil))
*CAT-PROCESS*
? (write-line "hi" (external-process-input-stream *cat-process*))
"hi"
? (finish-output (external-process-input-stream *cat-process*))
NIL
? (read-char-no-hang (external-process-output-stream *cat-process*))
#\h
? (read-char-no-hang (external-process-output-stream *cat-process*))
#\i
? (read-char-no-hang (external-process-output-stream *cat-process*))
#\Newline
? (read-char-no-hang (external-process-output-stream *cat-process*))
;; (hangs)
Another strange thing about the same situation is that LISTEN on that stream returns T even when there's no more to be read. |
|||
| #787 | fixed | ccl:arglist interns into the current package | ||
| Description |
When used on macros, ccl:arglist interns symbols from the lambda list into the current package: (defpackage :foo (:use :cl)) #<Package "FOO"> ? (in-package :foo) #<Package "FOO"> ? (defmacro bar (bar10)) ;Compiler warnings : ; In BAR: Unused lexical variable BAR10 BAR ? (in-package :cl-user) #<Package "COMMON-LISP-USER"> ? (find-symbol "BAR10") NIL NIL ? (ccl:arglist 'foo::bar t) (BAR10) :DECLARATION ? (find-symbol "BAR10") BAR10 :INTERNAL |
|||
| #788 | fixed | ARM FFI problems, partial patch | ||
| Description |
I've discovered multiple problems in ARM FFI while trying to run CFFI test suite.
Namely, these functions use explicit register specifications for their temps that are used for strd/ldrd instructions that need consective registers. This seems to break register handling somehow, as the following can be observed at the end of disassembly of my-mem-set-double-float in attached floatfail.lisp: (ldrd imm0 (:@ arg_z (:$ 2))) (fmdrr d0 imm0 imm1) (add nargs imm0 imm1) (fmrrd imm0 imm1 d0) (strd imm0 (:@ nargs (:$ 0))) (ldmia (:! sp) (imm0 vsp fn pc)) Here we see imm0 and imm1 getting destroyed by get-double vinsn and later being used to construct address for the following strd as if nothing happened. This leads to memory fault. The possible workaround is not using strd/ldrd at all but perhaps it's also possible to fix temp handling, but I don't have time to do it myself right now. |
|||
