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)
This commit is contained in:
parent
d9d6e8a04c
commit
a377c652b5
1 changed files with 16 additions and 3 deletions
19
src/coding.c
19
src/coding.c
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue