Subject: bug#15260: cannot build in a directory with non-ascii characters

From: Eli Zaretskii <[email-masked]>
Date: Thu, 31 Oct 2013 20:37:52 +0200

> From: Stefan Monnier <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Thu, 31 Oct 2013 14:09:39 -0400
> 
> So you mean that we have:
> - charset-map-path is a multibyte string.
> - the file-name encoding uses a charset that's not yet loaded.

Yes.

> How do we get into such a state?

Not sure about the details, since I don't really understand when Emacs
needs to load the charset map.  Perhaps the map is needed only when we
need to encode a string, not for decoding?

Phenomenologically, this happened when charset-map-path was already
decoded (as opposed to being a unibyte string) when this part of
startup.el runs:

  ;; Convert preloaded file names in load-history to absolute.
  (let ((simple-file-name
	 ;; Look for simple.el or simple.elc and use their directory
	 ;; as the place where all Lisp files live.
	 (locate-file "simple" load-path (get-load-suffixes)))
	lisp-dir)

locate-file eventually calls 'openp', which wants to encode
directories from load-path concatenated with simple.el etc.