Subject: bug#54493: 27.2; image-convert :data broken

From: Eli Zaretskii <[email-masked]>
Date: Mon, 21 Mar 2022 18:59:48 +0200

> From: Lars Ingebrigtsen <[email-masked]>
> Date: Mon, 21 Mar 2022 17:35:07 +0100
> Cc: [email-masked]
> 
> [email-masked] writes:
> 
> > I tried to view non-native image files.
> > I need not only to set variables, but also to modify a function.
> > The externally converted data is broken by automatic code-conversion.
> 
> I can reproduce this in Emacs 27.2, but not on the trunk, so it looks
> like this has been fixed.  Here's my test case:
> 
> (insert-image
>  (create-image
>   (with-temp-buffer
>     (set-buffer-multibyte nil)
>     (insert-file-contents "/home/larsi/src/WebKit/LayoutTests/fast/css/resources/bikes.bmp")
>     (buffer-string))
>   nil t :format 'image/bmp))

What if you evaluate this first:

  (set-default-coding-systems 'utf-8-dos)

Does it still work for you?  The OP is on MS-Windows, where the
default decodes the CRFL EOLs, something we shouldn't do with image
data.

In general, I believe explicitly binding coding-system-for-read, as
the OP suggested, is better than relying on some code somewhere that
just happens to let this work (on some systems).