From: Juho S. <js...@us...> - 2006-09-24 15:47:38
|
Update of /cvsroot/sbcl/sbcl/src/code In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv30148/src/code Modified Files: octets.lisp Log Message: 0.9.16.46: 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. Index: octets.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/code/octets.lisp,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- octets.lisp 6 Sep 2006 20:27:10 -0000 1.14 +++ octets.lisp 24 Sep 2006 15:47:27 -0000 1.15 @@ -641,6 +641,12 @@ (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 @@ 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))) |