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
(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-#:
(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
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);
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);
;;; 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
;;; 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"