mirror of
https://github.com/masscollaborationlabs/emacs.git
synced 2025-07-06 12:19:37 +00:00
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)
|
while (nbytes-- > 0)
|
||||||
{
|
{
|
||||||
int c = *src++;
|
int c;
|
||||||
|
|
||||||
if (c & 0x80)
|
/* Copy raw bytes in their 2-byte forms from multibyte
|
||||||
c = BYTE8_TO_CHAR (c);
|
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;
|
coding->charbuf[coding->charbuf_used++] = c;
|
||||||
}
|
}
|
||||||
produce_chars (coding, Qnil, 1);
|
produce_chars (coding, Qnil, 1);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue