changes relative to sbcl-1.0.45:
* bug fix: local tail calls to DYNAMIC-EXTENT functions can no longer cause
lifetime analysis to overwrite closed-over variables (lp#681092).
+ * bug fix: encoding errors from some multibyte external formats such as EUC-JP
+ were not handled correctly (lp#713063).
changes in sbcl-1.0.45 relative to sbcl-1.0.44:
* enhancement: ~/ and ~user/ are treated specially in pathnames.
;; replacement character, so we hardcode the preferred
;; replacement here.
#\?
- (mb-char-len (or (,ucs-to-mb (char-code byte)) -1))
+ (block size
+ (mb-char-len (or (,ucs-to-mb (char-code byte))
+ (return-from size 0))))
(let ((mb (,ucs-to-mb bits)))
(if (null mb)
(external-format-encoding-error stream byte)
(handler-case
(octets-to-string octets :external-format :bad-format)
(error (e) e))))))
+
+(with-test (:name :lp713063)
+ (with-open-file (f *test-path*
+ :direction :output
+ :external-format '(:euc-jp :replacement #\?)
+ :if-exists :supersede)
+ (write-string (make-string 3 :initial-element #\horizontal_bar) f))
+ (assert (equal "???"
+ (with-open-file (f *test-path*
+ :direction :input
+ :external-format :euc-jp)
+ (read-line f))))
+ (delete-file *test-path*))
\f
;;;; success
;;; 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".)
-"1.0.45.13"
+"1.0.45.14"