Subject: bug#35802: Broken data loaded from uni-decomposition

From: Juri Linkov <[email-masked]>
Date: Sun, 19 May 2019 22:46:07 +0300

While adding defcustoms for char-fold in bug#35689, I encountered a problem
where calling `(setq char-fold-table (char-fold-make-table))' garbled data
returned by `(unicode-property-table-internal 'decomposition)'.

This happens only with my customizations, so I tried to narrow down what
customization caused this, so here is the minimal test case:

0. emacs -Q

1. Eval:

(equal (progn (load "international/uni-decomposition.el" t t t t)
              (aref (cdr (assq 'decomposition char-code-property-alist)) 1024))
       (progn (let ((search-spaces-regexp "\\(\\s-\\|\n\\)+"))
                (load "international/uni-decomposition.el" t t t t))
              (aref (cdr (assq 'decomposition char-code-property-alist)) 1024)))
=> nil

But should return `t'.  I customized `search-whitespace-regexp'
(whose value isearch sets to `search-spaces-regexp') to a legitimate
value, but `unicode-property-table-internal' used in char-fold.el fails
to correctly load "uni-decomposition.el", thus breaking the char-fold search.