emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master d51d72b4a6: * src/dired.c (directory_files_internal): Update comm


From: Stefan Monnier
Subject: master d51d72b4a6: * src/dired.c (directory_files_internal): Update comment
Date: Sun, 10 Jul 2022 11:15:34 -0400 (EDT)

branch: master
commit d51d72b4a62384f33a593f5a2c0922c1aaecf106
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * src/dired.c (directory_files_internal): Update comment
---
 src/dired.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/dired.c b/src/dired.c
index 9aeff51636..c2c099f0a5 100644
--- a/src/dired.c
+++ b/src/dired.c
@@ -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);



reply via email to

[Prev in Thread] Current Thread [Next in Thread]