]> git.eshelyaron.com Git - emacs.git/commitdiff
* src/dired.c (directory_files_internal): Update comment
authorStefan Monnier <monnier@iro.umontreal.ca>
Sun, 10 Jul 2022 15:15:27 +0000 (11:15 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sun, 10 Jul 2022 15:15:27 +0000 (11:15 -0400)
src/dired.c

index 9aeff516369fdaafdbd2e96a273cd538c24359d8..c2c099f0a5ffaa3f283a3c7b454c37995141bb7e 100644 (file)
@@ -270,7 +270,17 @@ directory_files_internal (Lisp_Object directory, Lisp_Object full,
          ptrdiff_t name_nbytes = SBYTES (name);
          ptrdiff_t nbytes = directory_nbytes + needsep + name_nbytes;
          ptrdiff_t nchars = SCHARS (directory) + needsep + SCHARS (name);
-         /* FIXME: Why not make them all multibyte?  */
+         /* DECODE_FILE may return non-ASCII unibyte strings (e.g. when
+             file-name-coding-system is 'binary'), so we don't know for sure
+             that the bytes we have follow our internal utf-8 representation
+             for multibyte strings.  If nchars == nbytes we don't need to
+             care and just return a unibyte string; and if not, that means
+             one of 'name' or 'directory' is multibyte, in which case we
+             presume that the other one would also be multibyte if it
+             contained non-ASCII.
+             FIXME: This last presumption is broken when 'directory' is
+             multibyte (with non-ASCII), and 'name' is unibyte with non-ASCII
+             (because file-name-coding-system is 'binary').  */
          finalname = (nchars == nbytes)
                      ? make_uninit_string (nbytes)
                      : make_uninit_multibyte_string (nchars, nbytes);