From e0ba0f10da0a0f2722494bd2dd9646f0b5a44d75 Mon Sep 17 00:00:00 2001 From: Nikodemus Siivola Date: Sun, 30 May 2004 00:02:03 +0000 Subject: [PATCH] 0.8.10.63: More information on BUG 315 -- current behaviour is actually allowed by ANSI, but probably still worth fixing. --- BUGS | 19 ++++++++++++++----- version.lisp-expr | 2 +- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/BUGS b/BUGS index 6ec74ab..e5b063c 100644 --- a/BUGS +++ b/BUGS @@ -1325,11 +1325,20 @@ WORKAROUND: (adjust-array x '(5)) (char y 5))) - SBCL 0.8.10 elides the bounds check somewhere along the line, and - returns #\Nul (where an error would be much preferable, since a test - of that form but with (setf (char y 5) #\Space) potentially corrupts - the heap and certainly confuses the world if that string is used by - C code. + SBCL fails this because (array-dimension y 0) return 10 even after the + adjustment, and hence the bounds-check passes. This is strictly + speaking legal, since the dictionary entry for ADJUST-ARRAY + says: + + "If A is displaced to B, the consequences are unspecified if B is + adjusted in such a way that it no longer has enough elements to + satisfy A." + + Should this be left as is, or should ARRAY-DIMENSION see if the + displaced-to array has shrunk too much and signal an error? An error + would probably be preferable, since a test of that form but with + (setf (char y 5) #\Space) potentially corrupts the heap and + certainly confuses the world if that string is used by C code. 317: "FORMAT of floating point numbers" reported by Bruno Haible sbcl-devel "various SBCL bugs" from CLISP diff --git a/version.lisp-expr b/version.lisp-expr index 01d15b7..8174201 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".) -"0.8.10.62" +"0.8.10.63" -- 1.7.10.4