(or (stringp table)
(error "Not a char-table nor a file name: %s" table)))
(if (stringp table) (setq table (purecopy table)))
- (setf (alist-get name char-code-property-alist) table)
- (put name 'char-code-property-documentation (purecopy docstring)))
+ (if (and (stringp table)
+ (char-table-p (alist-get name char-code-property-alist)))
+ ;; The table is already setup and we're apparently trying to
+ ;; undo that, probably because `charprop.el' is being re-loaded.
+ ;; Just skip it, in order to work around a recursive load (bug#52945).
+ nil
+ (setf (alist-get name char-code-property-alist) table)
+ (put name 'char-code-property-documentation (purecopy docstring))))
(defvar char-code-property-table
(make-char-table 'char-code-property-table)