This is a small test file.
It has DOS line endings.
----cut here----
bar:
----cut here----
This is a small test file.
It too has DOS line endings.
----cut here----
Save them with DOS line endings, and
diff foo bar > foo.patch
cp foo bar
Visit foo.patch. When I do that, each line ends in ^M.
Now, in the patch buffer, M-x diff-apply-hunk. Note that the ^Ms have been added to the lines. Writing the buffer and examination with "hd" reveals that each line now ends \r\r\n.
It seems what's happened here is that diff-mode doesn't try to diagnose the character encoding of the patch file.