0.7.7.29
authorDaniel Barlow <dan@telent.net>
Tue, 17 Sep 2002 19:52:29 +0000 (19:52 +0000)
committerDaniel Barlow <dan@telent.net>
Tue, 17 Sep 2002 19:52:29 +0000 (19:52 +0000)
        Fix bug 200: (translate-logical-pathname "/") is now #p"/"
        Fix x86 save-lisp-and-die problem (reported by CSR in sbcl-devel
         Message-ID: <20020916083642.GA3374@cam.ac.uk>  - turns out to
         be ugly gencgc/purify interaction

BUGS
src/code/target-pathname.lisp
src/runtime/gencgc-internal.h
src/runtime/save.c
tests/pathnames.impure.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index afe5c22..fb974ca 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1361,6 +1361,8 @@ WORKAROUND:
     (TRANSLATE-LOGICAL-PATHNAME "/")
   should simply return #P"/", but signals an error in sbcl-0.7.7.28
 
+  Fixed in sbcl-0.7.7.29: bug temporarily left here in BUGS to avoid
+  its number being accidentally reallocated
 
 DEFUNCT CATEGORIES OF BUGS
   IR1-#:
index 9df17c6..7089003 100644 (file)
@@ -1494,8 +1494,7 @@ a host-structure or string."
           (return (translate-logical-pathname
                    (translate-pathname pathname from to)))))))
     (pathname pathname)
-    (stream (translate-logical-pathname (pathname pathname)))
-    (t (translate-logical-pathname (logical-pathname pathname)))))
+    (t (translate-logical-pathname (pathname pathname)))))
 
 (defun translate-logical-pathname (pathname &key)
   #!+sb-doc
index 6f75ae1..18dc9fb 100644 (file)
@@ -94,6 +94,10 @@ extern struct alloc_region  boxed_region;
 extern struct alloc_region  unboxed_region;
 extern int from_space, new_space;
 extern struct weak_pointer *weak_pointers;
+
+extern void *current_region_free_pointer;
+extern void *current_region_end_addr;
+
 \f
 void  gencgc_pickup_dynamic(void);
 
index 8069141..4fd98e7 100644 (file)
@@ -132,6 +132,14 @@ save(char *filename, lispobj init_function)
                 dynamic_space_free_pointer);
 #else
 #ifdef LISP_FEATURE_GENCGC
+    /* I don't know too much about the circumstances in which we could
+     * end up here.  It may be that current_region_free_pointer is
+     * guaranteed to be relevant and we could skip these slightly
+     * paranoid checks.  TRT would be to rid the code of
+     * current_region_foo completely - dan 2002.09.17 */
+    if((boxed_region.free_pointer < current_region_free_pointer) &&
+       (boxed_region.end_addr == current_region_end_addr))
+       boxed_region.free_pointer = current_region_free_pointer;
     /* Flush the current_region, updating the tables. */
     gc_alloc_update_page_tables(0,&boxed_region);
     gc_alloc_update_page_tables(1,&unboxed_region);
index 7898a29..2219012 100644 (file)
@@ -25,7 +25,7 @@
 ;;; CL:PARSE-ERROR (or more specifically, of type
 ;;; SB-KERNEL:NAMESTRING-PARSE-ERROR).
 (assert
-  (typep (grab-condition (translate-logical-pathname "demo0::bla;file.lisp"))
+  (typep (grab-condition (logical-pathname "demo0::bla;file.lisp"))
          'parse-error))
 
 ;;; some things SBCL-0.6.9 used not to parse correctly:
         (setf (logical-pathname-translations "")
               (list '("**;*.*.*" "/**/*.*")))))
 \f
+;;; Bug 200: translate-logical-pathname is according to the spec supposed
+;;; not to give errors if asked to translate a namestring for a valid
+;;; physical pathname.  Failed in 0.7.7.28 and before
+(assert (string= (namestring (translate-logical-pathname "/")) "/"))
+
+\f
 ;;; Not strictly pathname logic testing, but until sbcl-0.7.6.19 we
 ;;; had difficulty with non-FILE-STREAM stream arguments to pathname
 ;;; functions (they would cause memory protection errors).  Make sure
index 328dd71..6d18da2 100644 (file)
@@ -18,4 +18,4 @@
 ;;; internal versions off the main CVS branch, it gets hairier, e.g.
 ;;; "0.pre7.14.flaky4.13".)
 
-"0.7.7.28"
+"0.7.7.29"