X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=e5b063c8361f6cf4237da5897f6604b135230b17;hb=0c4bd285c478056a52da8a8431a44736e2feb4da;hp=6ec74abd6c0f6e2e7be6f91a07b1e84a37e1a633;hpb=175c81b8044d7210e08ac66690c9392ec8d19b21;p=sbcl.git 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