From 7f448ff4c2398eb044db8b188e017e428c36349b Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Thu, 5 Jun 2008 08:47:39 +0000 Subject: [PATCH] 1.0.17.27: delete aborted fasls in _all_ cases * Unwinding from the compiler with a non-compiler error used to leave the fasl lying around. * Reported by Attila Lendvai. --- NEWS | 2 ++ src/compiler/dump.lisp | 18 +++++++++--------- src/compiler/main.lisp | 2 +- version.lisp-expr | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/NEWS b/NEWS index ecd853ef3..9f9e05256 100644 --- a/NEWS +++ b/NEWS @@ -21,6 +21,8 @@ changes in sbcl-1.0.18 relative to 1.0.17: are never referenced through SYMBOL-VALUE at runtime. * bug fix: EAI_NODATA is deprecated since RFC 3493. Stop using it in sb-bsd-sockets. + * bug fix: if COMPILE-FILE aborts due to an unwind, the partial + fasl is now deleted. (reported by Attila Lendvai) * fixed some bugs revealed by Paul Dietz' test suite: ** NIL is a valid function name (regression at 1.0.13.38) ** FILL on lists was missing its return value (regression at 1.0.12.27) diff --git a/src/compiler/dump.lisp b/src/compiler/dump.lisp index c6c5eb150..1b51237c6 100644 --- a/src/compiler/dump.lisp +++ b/src/compiler/dump.lisp @@ -339,15 +339,15 @@ (defun close-fasl-output (fasl-output abort-p) (declare (type fasl-output fasl-output)) - ;; sanity checks - (aver (zerop (hash-table-count (fasl-output-patch-table fasl-output)))) - - ;; End the group. - (dump-fop 'fop-verify-empty-stack fasl-output) - (dump-fop 'fop-verify-table-size fasl-output) - (dump-word (fasl-output-table-free fasl-output) - fasl-output) - (dump-fop 'fop-end-group fasl-output) + (unless abort-p + ;; sanity checks + (aver (zerop (hash-table-count (fasl-output-patch-table fasl-output)))) + ;; End the group. + (dump-fop 'fop-verify-empty-stack fasl-output) + (dump-fop 'fop-verify-table-size fasl-output) + (dump-word (fasl-output-table-free fasl-output) + fasl-output) + (dump-fop 'fop-end-group fasl-output)) ;; That's all, folks. (close (fasl-output-stream fasl-output) :abort abort-p) diff --git a/src/compiler/main.lisp b/src/compiler/main.lisp index 9bdf95953..576b18893 100644 --- a/src/compiler/main.lisp +++ b/src/compiler/main.lisp @@ -1666,7 +1666,7 @@ SPEED and COMPILATION-SPEED optimization values, and the |# (let* ((fasl-output nil) (output-file-name nil) - (abort-p nil) + (abort-p t) (warnings-p nil) (failure-p t) ; T in case error keeps this from being set later (input-pathname (verify-source-file input-file)) diff --git a/version.lisp-expr b/version.lisp-expr index 82ec7ef36..5affd46da 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.17.26" +"1.0.17.27" -- 2.11.4.GIT