aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRodrigo Arias Mallo <rodarima@gmail.com>2024-06-01 21:33:58 +0200
committerRodrigo Arias Mallo <rodarima@gmail.com>2024-06-01 21:40:51 +0200
commitf02cc54c84efcea6ee4c65b64853d8c5671090e9 (patch)
tree8c9454833a39beccb4adfe926720fdd84ced4d6f /src
parentc96cd51fe73fddb4e9188e4f857938d33f386664 (diff)
Handle PNG warnings as non-fatal
The libpng library may emit warnings when decoding a PNG image, which are non-fatal. So far we were handling them as errors and stopping the decoding process, which prevents Dillo from decoding some images. In particular, images that emit the warning: > iCCP: known incorrect sRGB profile Fixes: https://github.com/dillo-browser/dillo/issues/179 Authored-by: dogma
Diffstat (limited to 'src')
-rw-r--r--src/png.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/png.c b/src/png.c
index fdee20cc..ae3d9f82 100644
--- a/src/png.c
+++ b/src/png.c
@@ -114,6 +114,15 @@ void Png_error_handling(png_structp png_ptr, png_const_charp msg)
longjmp(png->jmpbuf, 1);
}
+static
+void Png_warning_handler(png_structp png_ptr, png_const_charp msg)
+{
+ DilloPng *png;
+
+ png = png_get_error_ptr(png_ptr);
+ MSG_WARN("Png warning: %s in %s\n", msg, URL_STR(png->url));
+}
+
static void
Png_datainfo_callback(png_structp png_ptr, png_infop info_ptr)
{
@@ -354,7 +363,7 @@ static void Png_write(DilloPng *png, void *Buf, uint_t BufSize)
PNG_LIBPNG_VER_STRING,
png,
(png_error_ptr)Png_error_handling,
- (png_error_ptr)Png_error_handling);
+ (png_error_ptr)Png_warning_handler);
dReturn_if_fail (png->png_ptr != NULL);
png->info_ptr = png_create_info_struct(png->png_ptr);
dReturn_if_fail (png->info_ptr != NULL);