diff options
author | Lars Ingebrigtsen <larsi@gnus.org> | 2021-07-24 18:48:44 +0200 |
---|---|---|
committer | Lars Ingebrigtsen <larsi@gnus.org> | 2021-07-24 18:53:43 +0200 |
commit | 42d4537ed2cae41c969f59b413b4b9adae6dbc9b (patch) | |
tree | c583fa8f3d916fdf1b91841239a6520247691046 | |
parent | 0c77d1d2ca9a20d4b77a1228ee8f6e9aac64063a (diff) | |
download | emacs-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.c | 3 | ||||
-rw-r--r-- | test/src/fileio-tests.el | 5 |
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 "" ""))) |