Commit a377c652 authored by Eli Zaretskii's avatar Eli Zaretskii

Fix Dired display and operations on file names with raw bytes

* src/coding.c (decode_coding): When flushing remaining raw bytes
from multibyte text, copy 2-byte forms of eight-bit-*
characters as single characters, not as 2 raw bytes.  (Bug#29189)
parent d9d6e8a0
......@@ -7423,10 +7423,23 @@ decode_coding (struct coding_system *coding)
while (nbytes-- > 0)
{
int c = *src++;
int c;
if (c & 0x80)
c = BYTE8_TO_CHAR (c);
/* Copy raw bytes in their 2-byte forms from multibyte
text as single characters. */
if (coding->src_multibyte
&& CHAR_BYTE8_HEAD_P (*src) && nbytes > 0)
{
c = STRING_CHAR_ADVANCE (src);
nbytes--;
}
else
{
c = *src++;
if (c & 0x80)
c = BYTE8_TO_CHAR (c);
}
coding->charbuf[coding->charbuf_used++] = c;
}
produce_chars (coding, Qnil, 1);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment