Subject: Re: bug#14287: 24.3.50; Some *-dos coding systems remove characters before LF for some files.

From: Eli Zaretskii <[email-masked]>
Date: Sat, 27 Apr 2013 15:55:50 +0300

> Date: Sat, 27 Apr 2013 21:03:03 +0900
> From: Kazuhiro Ito <[email-masked]>
> 
> When I evaluate the below code on trunk, I get different result from 24.3.
> 
> (let ((file (expand-file-name "HELLO" data-directory)))
>   (mapcar
>    (lambda (coding)
>      (with-temp-buffer
>        (let ((coding-system-for-read coding))
> 	 (insert-file-contents file))
>        (cons coding
> 	     (buffer-substring
> 	      (point-min) (progn (forward-line 1) (point))))))
>    '(iso-8859-1-unix
>      iso-8859-1-dos
>      raw-text-unix
>      raw-text-dos
>      sjis-unix
>      sjis-dos
>      iso-2022-7bit-unix
>      iso-2022-7bit-dos)))
> 
> ->
> 
> ((iso-8859-1-unix . "This is a list of ways to say hello in various languages.
> ") (iso-8859-1-dos . "This is a list of ways to say hello in various languages

Does the patch below fix that?

=== modified file 'src/coding.c'
--- src/coding.c	2013-04-24 15:09:49 +0000
+++ src/coding.c	2013-04-27 12:52:02 +0000
@@ -7774,7 +7774,7 @@ decode_coding_gap (struct coding_system 
 	      while (src_beg < src)
 		{
 		  *--dst = *--src;
-		  if (*src == '\n')
+		  if (*src == '\n' && src > src_beg && src[-1] == '\r')
 		    src--;
 		}
 	      diff = dst - src;