master: (setf readtable-base-char-preference): assert-not-standard-readtable

stassats via Sbcl-commits <[email protected]>
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  e071985c6e399cf01b75c096c9b8d73f15188053 (commit)
      from  e1f589db879b6862b635b15b45c79cc6466996a7 (commit)

- Log -----------------------------------------------------------------
commit e071985c6e399cf01b75c096c9b8d73f15188053
Author: Stas Boukarev <[email protected]>
Date:   Thu Apr 16 02:47:46 2026 +0300

    (setf readtable-base-char-preference): assert-not-standard-readtable
---
 make-target-2-load.lisp | 8 +++++---
 src/code/reader.lisp    | 1 +
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/make-target-2-load.lisp b/make-target-2-load.lisp
index c9f0d562b..36c4de3dc 100644
--- a/make-target-2-load.lisp
+++ b/make-target-2-load.lisp
@@ -363,8 +363,9 @@ Please check that all strings which were not recognizable to the compiler
 (setq sb-c::*policy* (copy-structure sb-c::**baseline-policy**))
 
 ;;; Adjust READTABLE-BASE-CHAR-PREFERENCE back to the advertised default.
-(dolist (rt (list sb-impl::*standard-readtable* *debug-readtable*))
-  (setf (readtable-base-char-preference rt) :symbols))
+(handler-bind ((sb-int:standard-readtable-modified-error #'continue))
+  (dolist (rt (list sb-impl::*standard-readtable* *debug-readtable*))
+    (setf (readtable-base-char-preference rt) :symbols)))
 ;;; Change the internal constructor's default too.
 (let ((dsd sb-kernel::(find 'sb-impl::%readtable-string-preference
                             (dd-slots (find-defstruct-description 'readtable))
@@ -545,4 +546,5 @@ Please check that all strings which were not recognizable to the compiler
 #+(and x86-64 (not sb-devel)) (sb-ext:fold-identical-code :aggressive t :preserve-docstrings t)
 
 ;; See comments in 'readtable.lisp'
-(setf (readtable-base-char-preference *readtable*) :symbols)
+(handler-bind ((sb-int:standard-readtable-modified-error #'continue))
+  (setf (readtable-base-char-preference *readtable*) :symbols))
diff --git a/src/code/reader.lisp b/src/code/reader.lisp
index 68619b7e8..ce5840ed9 100644
--- a/src/code/reader.lisp
+++ b/src/code/reader.lisp
@@ -278,6 +278,7 @@ be interned (returned, respectively) as required. The default is :SYMBOLS."
 (defun (setf readtable-base-char-preference) (new-value readtable)
   (declare (type (member :symbols :strings :both nil) new-value))
   "Sets the READTABLE-BASE-CHAR-PREFERENCE of the given READTABLE."
+  (assert-not-standard-readtable readtable '(setf readtable-base-char-preference))
   (setf (%readtable-symbol-preference readtable)
         (if (member new-value '(:symbols :both)) 'base-char 'character)
         (%readtable-string-preference readtable)

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.