all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#35843: PNG warning: Interlace handling should be turned on when using png_read_image
@ 2019-05-21 13:01 Taegil Bae
  2019-05-21 15:56 ` bug#35843: PNG warning: Interlace handling should be turned on when using, png_read_image Paul Eggert
  0 siblings, 1 reply; 2+ messages in thread
From: Taegil Bae @ 2019-05-21 13:01 UTC (permalink / raw)
  To: 35843

Hi,

I got the following warning in Messages buffer:
PNG warning: Interlace handling should be turned on when using png_read_image

This is caused by the spacemacs log, which is an interlaced png image.
According to
the libpng source code, a caller to png_read_update_info(),
png_read_image() has to
turn on interlace handling. After I patched emacs source code as below,
the PNG waring disappeared:
diff --git a/src/image.c b/src/image.c
index 35ca3e2d66d..e0f6bbcc581 100644
--- a/src/image.c
+++ b/src/image.c
@@ -6214,6 +6214,8 @@ png_load_body (struct frame *f, struct image
*img, struct png_load_context *c)
     }

   /* Update info structure.  */
+  if (png_get_interlace_type(png_ptr, info_ptr) != PNG_INTERLACE_NONE)
+    png_set_interlace_handling(png_ptr);
   png_read_update_info (png_ptr, info_ptr);

   /* Get number of channels.  Valid values are 1 for grayscale images

Best regards,

Taegil





^ permalink raw reply related	[flat|nested] 2+ messages in thread

* bug#35843: PNG warning: Interlace handling should be turned on when using, png_read_image
  2019-05-21 13:01 bug#35843: PNG warning: Interlace handling should be turned on when using png_read_image Taegil Bae
@ 2019-05-21 15:56 ` Paul Eggert
  0 siblings, 0 replies; 2+ messages in thread
From: Paul Eggert @ 2019-05-21 15:56 UTC (permalink / raw)
  To: Taegil Bae; +Cc: 35843-done

[-- Attachment #1: Type: text/plain, Size: 319 bytes --]

Thanks for reporting the problem. It's not clear why interlace handling 
needs to be enabled manually when GNU Emacs will merely read the whole 
image (isn't libpng smart enough to do that on its own?) but I guess 
it's better to pacify libpng, if only to prevent users from worrying. I 
installed the attached patch.


[-- Attachment #2: 0001-Pacify-libpng-on-interlaced-images-Bug-35843.patch --]
[-- Type: text/x-patch, Size: 2391 bytes --]

From eeebdc49c0e113f1dd31b11c6addbc7082a406d6 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@Penguin.CS.UCLA.EDU>
Date: Tue, 21 May 2019 08:51:48 -0700
Subject: [PATCH] Pacify libpng on interlaced images (Bug#35843)

* src/image.c (png_set_interlace_handling) [WINDOWSNT]:
New function to link.
(init_png_functions): Link it.
(png_load_body): Call it before calling png_read_update_info.
---
 src/image.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/image.c b/src/image.c
index 35ca3e2d66..57b405f6db 100644
--- a/src/image.c
+++ b/src/image.c
@@ -5802,6 +5802,7 @@ DEF_DLL_FN (png_uint_32, png_get_valid, (png_structp, png_infop, png_uint_32));
 DEF_DLL_FN (void, png_set_strip_16, (png_structp));
 DEF_DLL_FN (void, png_set_expand, (png_structp));
 DEF_DLL_FN (void, png_set_gray_to_rgb, (png_structp));
+DEF_DLL_FN (int, png_set_interlace_handling, (png_structp));
 DEF_DLL_FN (void, png_set_background,
 	    (png_structp, png_color_16p, int, int, double));
 DEF_DLL_FN (png_uint_32, png_get_bKGD,
@@ -5840,6 +5841,7 @@ init_png_functions (void)
   LOAD_DLL_FN (library, png_set_strip_16);
   LOAD_DLL_FN (library, png_set_expand);
   LOAD_DLL_FN (library, png_set_gray_to_rgb);
+  LOAD_DLL_FN (library, png_set_interlace_handling);
   LOAD_DLL_FN (library, png_set_background);
   LOAD_DLL_FN (library, png_get_bKGD);
   LOAD_DLL_FN (library, png_read_update_info);
@@ -5875,6 +5877,7 @@ init_png_functions (void)
 #  undef png_set_background
 #  undef png_set_expand
 #  undef png_set_gray_to_rgb
+#  undef png_set_interlace_handling
 #  undef png_set_longjmp_fn
 #  undef png_set_read_fn
 #  undef png_set_sig_bytes
@@ -5899,6 +5902,7 @@ init_png_functions (void)
 #  define png_set_background fn_png_set_background
 #  define png_set_expand fn_png_set_expand
 #  define png_set_gray_to_rgb fn_png_set_gray_to_rgb
+#  define png_set_interlace_handling fn_png_set_interlace_handling
 #  define png_set_longjmp_fn fn_png_set_longjmp_fn
 #  define png_set_read_fn fn_png_set_read_fn
 #  define png_set_sig_bytes fn_png_set_sig_bytes
@@ -6213,7 +6217,7 @@ png_load_body (struct frame *f, struct image *img, struct png_load_context *c)
 	}
     }
 
-  /* Update info structure.  */
+  png_set_interlace_handling (png_ptr);
   png_read_update_info (png_ptr, info_ptr);
 
   /* Get number of channels.  Valid values are 1 for grayscale images
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-05-21 15:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-21 13:01 bug#35843: PNG warning: Interlace handling should be turned on when using png_read_image Taegil Bae
2019-05-21 15:56 ` bug#35843: PNG warning: Interlace handling should be turned on when using, png_read_image Paul Eggert

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.