Thanks you both for the information. I don't insist if you don't think this way, but I think this bug was partly due to ucs-normalize-region being called only if the user is on a certain platform/filesystem and the file name actually needs normalization, so it would be better to fix such a function not to break a globally shared state like match data so that there's no room for more bugs of the same kind. Just my two yen. 2019-08-23日(金) 14:06 YAMAMOTO Mitsuharu : > On Fri, 23 Aug 2019 12:51:29 +0900, > Lars Ingebrigtsen wrote: > > > > Akinori MUSHA writes: > > > > > A patch generated by git format-patch is attached below, which simply > > > wraps `ucs-normalize-region` with `save-match-data`. > > > > > > I'm a user of the Emacs Mac port by mituharu was investigating a bug > > > where dired fails to open a certain local directory on macOS. The > > > error was raised at `replace-match` in the `insert-directory` > > > function: > > > > > > ``` > > > (when (re-search-forward "^ *\\(total\\)" nil t) > > > (let ((available (get-free-disk-space "."))) > > > (when available > > > ;; Replace "total" with "used", to avoid confusion. > > > (replace-match "total used in directory" nil nil nil > 1) > > > ``` > > > > > > And it turned out the match data changed after returning from > > > `get-free-disk-space` and that was why `replace-match` failed. > > > > You don't say what Emacs version you're reporting this bug for, but the > > following patch was applied in February 2018 to the Emacs trunk, so I > > think this problem has been fixed by now: > > For the Mac port, the "work" branch already contains a similar change: > > > https://bitbucket.org/mituharu/emacs-mac/commits/b651c3a6bab6795202e2ebcd4396d665909cc210 > > It will shortly be included in the next release based on Emacs 26.3 RC1. > > YAMAMOTO Mitsuharu > mituharu@math.s.chiba-u.ac.jp > >