summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-07-24 18:48:44 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2021-07-24 18:53:43 +0200
commit42d4537ed2cae41c969f59b413b4b9adae6dbc9b (patch)
treec583fa8f3d916fdf1b91841239a6520247691046
parent0c77d1d2ca9a20d4b77a1228ee8f6e9aac64063a (diff)
downloademacs-42d4537ed2cae41c969f59b413b4b9adae6dbc9b.tar.gz
emacs-42d4537ed2cae41c969f59b413b4b9adae6dbc9b.tar.bz2
emacs-42d4537ed2cae41c969f59b413b4b9adae6dbc9b.zip
Really convert to multibyte in Fdirectory_append
* src/fileio.c (Fdirectory_append): Fix check for whether we need to convert to multibyte. (Fdirectory_append):
-rw-r--r--src/fileio.c3
-rw-r--r--test/src/fileio-tests.el5
2 files changed, 6 insertions, 2 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 60f5650302c..6d505fd0f01 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -799,8 +799,7 @@ usage: (record DIRECTORY &rest COMPONENTS) */)
if (STRING_MULTIBYTE (arg) || string_ascii_p (arg))
elements[i] = arg;
else
- elements[i] = make_multibyte_string (SSDATA (arg), SCHARS (arg),
- SCHARS (arg));
+ elements[i] = Fstring_to_multibyte (arg);
arg = elements[i];
/* We have to recompute the number of bytes. */
if (i == nargs - 1
diff --git a/test/src/fileio-tests.el b/test/src/fileio-tests.el
index 702659fa395..73a7775279a 100644
--- a/test/src/fileio-tests.el
+++ b/test/src/fileio-tests.el
@@ -170,6 +170,11 @@ Also check that an encoding error can appear in a symlink."
(should (equal (directory-append "fóo" "bar") "fóo/bar"))
(should (equal (directory-append "foo" "bár") "foo/bár"))
(should (equal (directory-append "fóo" "bár") "fóo/bár"))
+ (let ((string (make-string 5 ?a)))
+ (should (not (multibyte-string-p string)))
+ (aset string 2 255)
+ (should (not (multibyte-string-p string)))
+ (should (equal (directory-append "fóo" string) "fóo/aa\377aa")))
(should-error (directory-append "foo" ""))
(should-error (directory-append "" "bar"))
(should-error (directory-append "" "")))