0.9.16.46:
authorJuho Snellman <jsnell@iki.fi>
Sun, 24 Sep 2006 15:47:27 +0000 (15:47 +0000)
committerJuho Snellman <jsnell@iki.fi>
Sun, 24 Sep 2006 15:47:27 +0000 (15:47 +0000)
        Fix regressions:

        * Installation was broken with non-bash /bin/sh (thanks to
          Niimi Satoshi for the patch)
        * DEFAULT-EXTERNAL-FORMAT would now try to print a warning for
          an invalid external format before streams had been initialized,
          causing an infinite error loop (reported by Hannu Koivisto).
          Temporary fix is just not printing the warning, a better fix
          will wait until after the freeze.
        * Also stop autodetecting the external format from the locale
          on non-unicode builds. Having a default external format that's
          incompatible with CHARACTER doesn't seem very sensible, especially
          now that the external formats are also used for SB-ALIEN:C-STRING
          instead of just streams.

NEWS
install.sh
src/code/octets.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index ba9c047..67243b4 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -21,6 +21,9 @@ changes in sbcl-0.9.17 (0.9.99?) relative to sbcl-0.9.16:
     class-precedence-lists of GENERIC-FUNCTION and
     STANDARD-GENERIC-FUNCTION comply with the requirement of ANSI
     1.4.4.5.
+  * minor incompatible change: the default stream external format on
+    non-unicode SBCL is no longer detected from the locale, but is always
+    ISO-8859-1
   * new feature: Add a version of evaluator that uses an interpreter instead
     of the compiler. EVAL still uses the compiler by default, to switch it
     to use the interpreter, set the value of the variable 
index 0265a4d..3ee1ffb 100644 (file)
@@ -5,12 +5,9 @@ set -e
 
 ensure_dirs ()
 {
-    OLD_IFS=$IFS
-    IFS=''
-    for j in $*; do
+    for j in "$@"; do
          test -d "$j" || mkdir -p "$j"
     done;
-    IFS=$OLD_IFS
 }
 
 if [ "$OSTYPE" = "cygwin" -o "$OSTYPE" = "msys" ] ; then
index 5aca4f8..247f685 100644 (file)
@@ -641,6 +641,12 @@ one-past-the-end"
 
 (defun default-external-format ()
   (or *default-external-format*
+      ;; On non-unicode, use iso-8859-1 instead of detecting it from
+      ;; the locale settings. Defaulting to an external-format which
+      ;; can represent characters that the CHARACTER type can't
+      ;; doesn't seem very sensible.
+      #!-sb-unicode
+      (setf *default-external-format* :latin-1)
       (let ((external-format #!-win32 (intern (or (sb!alien:alien-funcall
                                                     (extern-alien
                                                       "nl_langinfo"
@@ -649,15 +655,24 @@ one-past-the-end"
                                                     sb!unix:codeset)
                                                   "LATIN-1")
                                               "KEYWORD")
-                             #!+win32
-                               #!+sb-unicode (sb!win32::ansi-codepage)
-                               #!-sb-unicode :LATIN-1))
+                             #!+win32 (sb!win32::ansi-codepage)))
         (/show0 "cold-printing defaulted external-format:")
         #!+sb-show
         (cold-print external-format)
         (/show0 "matching to known aliases")
         (dolist (entry *external-formats*
                  (progn
+                   ;;; FIXME! This WARN would try to do printing
+                   ;;; before the streams have been initialized,
+                   ;;; causing an infinite erroring loop. We should
+                   ;;; either print it by calling to C, or delay the
+                   ;;; warning until later. Since we're in freeze
+                   ;;; right now, and the warning isn't really
+                   ;;; essential, I'm doing what's least likely to
+                   ;;; cause damage, and commenting it out. This
+                   ;;; should be revisited after 0.9.17. -- JES,
+                   ;;; 2006-09-21
+                   #+nil
                    (warn "Invalid external-format ~A; using LATIN-1"
                          external-format)
                    (setf external-format :latin-1)))
index 8c42600..7e1cce5 100644 (file)
@@ -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.9.16.45"
+"0.9.16.46"