diff options
-rw-r--r-- | main/webkit/APKBUILD | 2 | ||||
-rw-r--r-- | main/webkit/libpng-1.5.patch | 48 |
2 files changed, 49 insertions, 1 deletions
diff --git a/main/webkit/APKBUILD b/main/webkit/APKBUILD index 369604bae7..67d5f04fb7 100644 --- a/main/webkit/APKBUILD +++ b/main/webkit/APKBUILD @@ -18,7 +18,7 @@ makedepends=" install= subpackages="$pkgname-dev gtklauncher" source="http://webkitgtk.org/$pkgname-$pkgver.tar.gz - " + libpng-1.5.patch" depends_dev="gtk+-dev libsoup-dev gstreamer-dev" _builddir="$srcdir"/$pkgname-$pkgver diff --git a/main/webkit/libpng-1.5.patch b/main/webkit/libpng-1.5.patch new file mode 100644 index 0000000000..ecf533d6f1 --- /dev/null +++ b/main/webkit/libpng-1.5.patch @@ -0,0 +1,48 @@ +--- webkit-1.4.0.orig/Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp ++++ webkit-1.4.0/Source/WebCore/platform/image-decoders/png/PNGImageDecoder.cpp +@@ -226,7 +226,7 @@ + #ifdef PNG_iCCP_SUPPORTED + char* profileName; + int compressionType; +- char* profile; ++ png_byte* profile; + png_uint_32 profileLength; + if (png_get_iCCP(png, info, &profileName, &compressionType, &profile, &profileLength)) { + ColorProfile colorProfile; +@@ -241,11 +241,11 @@ + { + png_structp png = m_reader->pngPtr(); + png_infop info = m_reader->infoPtr(); +- png_uint_32 width = png->width; +- png_uint_32 height = png->height; ++ png_uint_32 width = png_get_image_width(png, info); ++ png_uint_32 height = png_get_image_height(png, info); + + // Protect against large images. +- if (png->width > cMaxPNGSize || png->height > cMaxPNGSize) { ++ if (width > cMaxPNGSize || height > cMaxPNGSize) { + longjmp(JMPBUF(png), 1); + return; + } +@@ -318,9 +318,9 @@ + m_reader->setHasAlpha(channels == 4); + + if (m_reader->decodingSizeOnly()) { +- // If we only needed the size, halt the reader. +- m_reader->setReadOffset(m_reader->currentBufferSize() - png->buffer_size); +- png->buffer_size = 0; ++ // If we only needed the size, halt the reader. ++ // '0' argument to png_process_data_pause means: Do not cache unprocessed data. ++ m_reader->setReadOffset(m_reader->currentBufferSize() - png_process_data_pause(png, 0)); + } + } + +@@ -343,7 +343,7 @@ + // For PNGs, the frame always fills the entire image. + buffer.setOriginalFrameRect(IntRect(IntPoint(), size())); + +- if (m_reader->pngPtr()->interlaced) ++ if (png_get_interlace_type(m_reader->pngPtr(), m_reader->infoPtr()) != PNG_INTERLACE_NONE) + m_reader->createInterlaceBuffer((m_reader->hasAlpha() ? 4 : 3) * size().width() * size().height()); + } + |