Subject: bug#20704: info.el bug fix; Interprets Info format wrongly

From: Teddy Hogeborn <[email-masked]>
Date: Tue, 09 Jun 2015 13:09:08 +0200

Eli Zaretskii <[email-masked]> writes:

> > > +	      (+ (point-min) (byte-to-position
> > > +                              (read (current-buffer))))
> > 
> > Hmm... this only works if the Info file is encoded in UTF-8.  I
> > guess in the case of Info, 99% of the files are just ASCII and
> > there's a chance that the vast majority of the rest is (or will be)
> > UTF-8, so maybe this hack works well in practice.
>
> Using byte-to-position would make things worse for Latin-1 and the
> likes.

No, byte-to-position already checks for that:

---- src/marker.c, line 302
  /* If this buffer has as many characters as bytes,
     each character must be one byte.
     This takes care of the case where enable-multibyte-characters is nil.  */
  if (best_above == best_above_byte)
    return bytepos;
----

Therefore, an Info file in Latin-1 should work just fine.

> But it shouldn't be hard to add a simple test of
> buffer-file-coding-system: if it states fixed-size encoding, like any
> of the 8-bit encodings, or UTF-16,
> the conversion to character position is trivial.

I think you mean UTF-32 instead of UTF-16, since UTF-16 is variable-
length.

/Teddy Hogeborn