[Ecls-list] Runtime bug in compiled code

daiyanh at yahoo.co.jp daiyanh at yahoo.co.jp
Thu Jan 1 13:33:04 UTC 2015

Another example from 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.

Sent from Windows Mail
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20150101/78bd56d3/attachment.html>

More information about the ecl-devel mailing list