Subject: bug#13505: Bug#696026: emacs24: file corruption on saving

From: Eli Zaretskii <[email-masked]>
Date: Mon, 21 Jan 2013 05:48:14 +0200

> Date: Sun, 20 Jan 2013 23:10:08 +0100
> From: Vincent Lefevre <[email-masked]>
> Cc: [email-masked], [email-masked], [email-masked],
> 	[email-masked], [email-masked]
> 
> On 2013-01-20 23:40:14 +0200, Eli Zaretskii wrote:
> > > Date: Sun, 20 Jan 2013 22:25:08 +0100
> > > From: Vincent Lefevre <[email-masked]>
> > > Cc: Rob Browning <[email-masked]>, Kenichi Handa <[email-masked]>,
> > > 	[email-masked], [email-masked],
> > > 	[email-masked]
> > > 
> > > On 2013-01-20 18:49:38 +0200, Eli Zaretskii wrote:
> > > > Personally, I don't think there's a bug here.  It's a cockpit error.
> > > 
> > > Perhaps it isn't a bug at save time. But then, selecting a lossy
> > > encoding by default when visiting the file is the bug (and really
> > > a regression), particularly if this isn't clearly told to the user.
> > 
> > The encoding isn't lossy.
> 
> You said:
> 
> | The original encoded form of the characters as found on disk at
> | visit time _cannot_ be recovered by saving with raw-text, because
> | that encoded form is lost without a trace when the file is _visited_
>   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> | and decoded into the internal representation.
> 
> This is what lossy is.

In that sense, every encoding except no-conversion is lossy.

> On the opposite, the utf-8 encoding doesn't seem to be lossy: Emacs
> seems to handle files with invalid UTF-8 sequences without any loss.
> So, this encoding is safe, even if Emacs wrongly guess the encoding.

No, it isn't, although you could get away with it most of the time.

> But Emacs should clearly tell the user what to do after C-x C-s and
> clearly say when there can be data loss.

At save time, "data loss" is wrt what's in the buffer.  In that sense,
the encodings Emacs suggested don't lose any data.

> Then Emacs says: "Select one of the safe coding systems listed below
> [...]", but doesn't say that something has already been lost. So, the
> words "safe coding systems" are really misleading.

It's misleading because you misunderstand what is "safe" at buffer
save time.