PNG image handler: Avoid "invalid distance too far back" error
For certain slightly miscoded png images, newer versions of libpng will trigger the mentioned zlib error and fail to read the image. This miscoding has until now been safely ignored by all png implementations, so such images exist in the wild, and users expect them to work. Since the cost of the workaround is only a missed opportunity of a tiny saving in memory usage during decoding, enable it. Task-number: QTBUG-58171 Change-Id: I820a9faef6d5b7af79c04404ebdceb48a096f29a Reviewed-by: André Klitzing <aklitzing@gmail.com> Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
This commit is contained in:
parent
098d87c63f
commit
33ebe60098
@ -521,6 +521,12 @@ bool QPngHandlerPrivate::readPngHeader()
|
||||
|
||||
png_set_error_fn(png_ptr, 0, 0, qt_png_warning);
|
||||
|
||||
#if defined(PNG_SET_OPTION_SUPPORTED) && defined(PNG_MAXIMUM_INFLATE_WINDOW)
|
||||
// Trade off a little bit of memory for better compatibility with existing images
|
||||
// Ref. "invalid distance too far back" explanation in libpng-manual.txt
|
||||
png_set_option(png_ptr, PNG_MAXIMUM_INFLATE_WINDOW, PNG_OPTION_ON);
|
||||
#endif
|
||||
|
||||
info_ptr = png_create_info_struct(png_ptr);
|
||||
if (!info_ptr) {
|
||||
png_destroy_read_struct(&png_ptr, 0, 0);
|
||||
|
Loading…
Reference in New Issue
Block a user