diff options
author | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-06-01 21:33:58 +0200 |
---|---|---|
committer | Rodrigo Arias Mallo <rodarima@gmail.com> | 2024-06-01 21:40:51 +0200 |
commit | f02cc54c84efcea6ee4c65b64853d8c5671090e9 (patch) | |
tree | 8c9454833a39beccb4adfe926720fdd84ced4d6f /src | |
parent | c96cd51fe73fddb4e9188e4f857938d33f386664 (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.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -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); |