From 5bf4a6a677c80a71dfa31b5c9c374f986594392f Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Sun, 24 Nov 2002 15:57:46 +0000 Subject: [PATCH] 0.7.9.65: Firefighting on showstopper bugs: ... commit change as per CSR sbcl-devel 22-11-2002 for BUG 227 ... Julian Fondren "leap before looking" patch for sbcl --core (sbcl-devel 21-11-2002) ... DB "silly debugging bug" sbcl-devel 24-11-2002 --- BUGS | 18 +----------------- src/compiler/fndb.lisp | 4 ++-- src/runtime/coreparse.c | 2 +- src/runtime/runtime.c | 2 +- tests/compiler.pure.lisp | 6 ++++++ version.lisp-expr | 2 +- 6 files changed, 12 insertions(+), 22 deletions(-) diff --git a/BUGS b/BUGS index ef9ea5e..c91f7db 100644 --- a/BUGS +++ b/BUGS @@ -1342,23 +1342,7 @@ WORKAROUND: (safe-format t "~&baz ~S (~A) ~S" condition condition result))))))) 227: "compiler bewilderment with adjustable vectors and COPY-SEQ" - In sbcl-0.7.9.54 on x86, - (let ((v (make-array 0 :fill-pointer 0))) - (vector-push-extend 1 v) (copy-seq v)) - fails with - The value 336206758 is not of type VECTOR. - More excitement follows from - (defun argh2 (x) - (let ((v (make-array 0 :fill-pointer 0))) - (vector-push-extend x v) - (format t - "~&~<~;/after VPE ~_~~;~:>~%" - (list - (let* ((xx1871 v) (nn1872 (/nn xx1871))) - (list (if nn1872 nn1872 xx1871))))) - (copy-seq v))) - where (ARGH2 2) loops endlessly printing "/after VPE V==#(3)". - + (fixed in sbcl-0.7.9.65) DEFUNCT CATEGORIES OF BUGS IR1-#: diff --git a/src/compiler/fndb.lisp b/src/compiler/fndb.lisp index 2b6ba93..ab6d4a1 100644 --- a/src/compiler/fndb.lisp +++ b/src/compiler/fndb.lisp @@ -425,12 +425,12 @@ :derive-type (sequence-result-nth-arg 1)) (defknown copy-seq (sequence) consed-sequence (flushable) - :derive-type #'result-type-first-arg) + :derive-type (sequence-result-nth-arg 1)) (defknown length (sequence) index (foldable flushable)) (defknown reverse (sequence) consed-sequence (flushable) - :derive-type #'result-type-first-arg) + :derive-type (sequence-result-nth-arg 1)) (defknown nreverse (sequence) sequence () :derive-type #'result-type-first-arg) diff --git a/src/runtime/coreparse.c b/src/runtime/coreparse.c index a00438c..007e6c0 100644 --- a/src/runtime/coreparse.c +++ b/src/runtime/coreparse.c @@ -187,7 +187,7 @@ load_core_file(char *file) goto losing_build_id; for (i = 0; i < remaining_len; ++i) { FSHOW((stderr, "ptr[%d] = char = %d, expected=%d\n", - ptr[i], i, build_id[i])); + i, ptr[i], build_id[i])); if (ptr[i] != build_id[i]) goto losing_build_id; } diff --git a/src/runtime/runtime.c b/src/runtime/runtime.c index 98a3d57..0307d05 100644 --- a/src/runtime/runtime.c +++ b/src/runtime/runtime.c @@ -148,10 +148,10 @@ main(int argc, char *argv[], char *envp[]) lose("more than one core file specified"); } else { ++argi; - core = copied_string(argv[argi]); if (argi >= argc) { lose("missing filename for --core argument"); } + core = copied_string(argv[argi]); ++argi; } } else if (0 == strcmp(arg, "--end-runtime-options")) { diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index a7bdfe4..3ee09af 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -268,3 +268,9 @@ x)) (assert (null result)) (assert (typep error 'program-error))) + +;;; COPY-SEQ should work on known-complex vectors: +(assert (equalp #(1) + (let ((v (make-array 0 :fill-pointer 0))) + (vector-push-extend 1 v) + (copy-seq v)))) diff --git a/version.lisp-expr b/version.lisp-expr index ab8084c..c1dd8f6 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.9.64" +"0.7.9.65" -- 1.7.10.4