[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#5251: 23.1; problem in decode_eol of coding.c
From: |
Toru TSUNEYOSHI |
Subject: |
bug#5251: 23.1; problem in decode_eol of coding.c |
Date: |
Sun, 20 Dec 2009 17:57:09 +0900 |
In GNU Emacs 23.1, there is a problem in decode_eol of coding.c.
In buffer of which enable-multibyte-characters is nil,
the function `decode-coding-region' should delete the character '^M'
(code: 0x0d) at the end of line,
in case that the function parameter `coding-system' is *-dos (and
the variable `inhibit-eol-conversion' is nil).
But, in practice, the function doesn't delete all of the character '^M'.
You can watch the problem with the following.
========================================================================
(progn
(pop-to-buffer (generate-new-buffer-name "*scratch*"))
(set-buffer-multibyte nil)
(insert (encode-coding-string "あ" 'euc-jp) "\xd" "\n")
(read-char "(press any key)")
(decode-coding-region (point-min) (point-max) 'euc-jp-dos)
(read-char "doesn't delete all of the character '^M'. (press any key)")
(set-buffer-multibyte t))
========================================================================
I made a patch to fix the problem. Please check it.
--- coding.c.orig 2009-07-08 12:09:16.000000000 +0900
+++ coding.c 2009-12-20 16:36:45.887121600 +0900
@@ -6598,7 +6598,8 @@
{
int pos_byte = coding->dst_pos_byte;
int pos = coding->dst_pos;
- int pos_end = pos + coding->produced_char - 1;
+ int pos_end = pos + (coding->dst_multibyte
+ ? coding->produced_char : coding->produced) - 1;
while (pos < pos_end)
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- bug#5251: 23.1; problem in decode_eol of coding.c,
Toru TSUNEYOSHI <=