[Ecls-list] Runtime bug in compiled code
Pascal J. Bourguignon
pjb at informatimago.com
Thu Jan 1 14:19:31 UTC 2015
> On 01 Jan 2015, at 14:33, <daiyanh at yahoo.co.jp> <daiyanh at yahoo.co.jp> wrote:
>
> Another example from http://www.cliki.net/diff <http://www.cliki.net/diff>
> In the diff.lisp file,
>
> (defmacro do-file-lines ((line-var pathname-var &optional result) &body body)
> (let ((stream-var (gensym)))
> `(with-open-file (,stream-var ,pathname-var :direction :input
> :element-type 'character)
> (do-stream-lines (,line-var ,stream-var ,result)
> , at body))))
>
> (defun diff::intern-files (&rest files)
> (let ((interner (diff::make-interner))
> (interned-files nil))
> (dolist (file files (values interner (nreverse interned-files)))
> (let ((interned-file nil))
> (diff::do-file-lines (line file)
> (let ((code (diff::intern-string interner line)))
> (push code interned-file)))
> (push (coerce (nreverse interned-file) 'simple-vector) interned-files)))))
>
> The compiled code refuses to run, presumably choking at the macro expansion above.
> If I eval the lower diff::intern-files by c-x c-e, the code runs fine.
Works for me:
; SLIME 2014-08-01
CL-USER> (ql:quickload :diff)
To load "diff":
Load 1 ASDF system:
diff
; Loading "diff"
[package cl-ppcre]................................
[package impl-specific-gray]......................
[package trivial-gray-streams]....................
[package diff]......
(:DIFF)
CL-USER> (diff::intern-files #P"/tmp/a/a.lisp" #P"/tmp/a/b.lisp")
#<a DIFF::INTERNER>
(#(0 1 2 3 4 5 6 7) #(0 8 2 9 4 10 6 11))
CL-USER> (list (lisp-implementation-type) (lisp-implementation-version))
("ECL" "13.5.1")
CL-USER>
http://www.centova.com/en/faq/general/troubleshooting/how_to_effectively_report_a_bug_or_problem
--
__Pascal J. Bourguignon__
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20150101/ba1785c8/attachment.html>
More information about the ecl-devel
mailing list