From: Nikodemus Siivola Date: Sat, 5 May 2007 10:36:00 +0000 (+0000) Subject: 1.0.5.33: fix botched commit 1.0.5.32: partial fix for DISASSEMBLE buglet X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=6483924c30758e2393428c7fa3f63c9faf924600;p=sbcl.git 1.0.5.33: fix botched commit 1.0.5.32: partial fix for DISASSEMBLE buglet * Test for >= length, not > length. * Record the remaining WARNING in BUGS. --- diff --git a/BUGS b/BUGS index a7e6412..48ea0b3 100644 --- a/BUGS +++ b/BUGS @@ -1807,3 +1807,16 @@ WORKAROUND: call to ROOM would see them, and allocate even more... Reported by Faré Rideau on sbcl-devel. + +414: strange DISASSEMBLE warning + + Compiling and disassembling + + (defun disassemble-source-form-bug (x y z) + (declare (optimize debug)) + (list x y z)) + + Gives + + WARNING: bogus form-number in form! The source file has probably + been changed too much to cope with. diff --git a/NEWS b/NEWS index a8c6cf4..206fe12 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,9 @@ changes in sbcl-1.0.6 relative to sbcl-1.0.5: system running with GC inhibited. * bug fix: a DECLARE form evaluated at top-level now causes an error rather than silently (or verbosely) returning NIL. + * bug fix: trying to dissassemble functions compiled at high DEBUG could + result in a error being signalled due to source form lookup errors. + (reported by Peter Graves) changes in sbcl-1.0.5 relative to sbcl-1.0.4: * incompatible change: removed writer methods for host-ent-name, diff --git a/src/compiler/target-disassem.lisp b/src/compiler/target-disassem.lisp index b34a6a1..996bc96 100644 --- a/src/compiler/target-disassem.lisp +++ b/src/compiler/target-disassem.lisp @@ -1016,7 +1016,7 @@ (sfcache-form-number-mapping-table cache) mapping-table)) (cond ((null toplevel-form) nil) - ((> form-number (length mapping-table)) + ((>= form-number (length mapping-table)) (warn "bogus form-number in form! The source file has probably ~@ been changed too much to cope with.") (when cache diff --git a/tests/compiler.impure.lisp b/tests/compiler.impure.lisp index 4dd6b02..2d95261 100644 --- a/tests/compiler.impure.lisp +++ b/tests/compiler.impure.lisp @@ -1426,4 +1426,9 @@ (defmacro macro-no-env () :foo)))) +(dolist (*evaluator-mode* '(:interpret :compile)) + (disassemble (eval '(defun disassemble-source-form-bug (x y z) + (declare (optimize debug)) + (list x y z))))) + ;;; success diff --git a/version.lisp-expr b/version.lisp-expr index 08fffd6..9b0dd83 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.5.32" +"1.0.5.33"