diff options
author | Parabola <dev@list.parabolagnulinux.org> | 2012-02-05 17:25:05 +0000 |
---|---|---|
committer | Parabola <dev@list.parabolagnulinux.org> | 2012-02-05 17:25:05 +0000 |
commit | 359d940358dec836dd0acfe9d9caf0b1ff0a97fe (patch) | |
tree | eeed5f77c8417a98fe5b8538d3c019d1cea00c04 /testing/xulrunner | |
parent | cdc66cc7110e78bf1197f9effc70422114f9341b (diff) |
Sun Feb 5 17:25:01 UTC 2012
Diffstat (limited to 'testing/xulrunner')
-rw-r--r-- | testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch b/testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch deleted file mode 100644 index dc93a2e8a..000000000 --- a/testing/xulrunner/5007_fix_libpr0n_nsPNGDecoder.patch +++ /dev/null @@ -1,81 +0,0 @@ -# HG changeset patch -# User Glenn Randers-Pehrson <glennrp+bmo@gmail.com> -# Date 1320490106 0 -# Node ID aff1bd412058cb6926a8feae1e8c0fc76b4c04a3 -# Parent 8248dbffd64534fb6c65ad3d757b795119e783c6 -Bug 682677 - Eliminated direct access to mInfo->pixel_depth, which is not allowed in libpng15. We access pixel_depth via png_get_IHDR() instead; r=joedrew - -diff --git a/modules/libpr0n/decoders/nsICODecoder.cpp b/modules/libpr0n/decoders/nsICODecoder.cpp ---- a/modules/libpr0n/decoders/nsICODecoder.cpp -+++ b/modules/libpr0n/decoders/nsICODecoder.cpp -@@ -381,18 +381,17 @@ nsICODecoder::WriteInternal(const char* - return; - } - mPos += aCount; - aBuffer += aCount; - aCount = 0; - - // Raymond Chen says that 32bpp only are valid PNG ICOs - // http://blogs.msdn.com/b/oldnewthing/archive/2010/10/22/10079192.aspx -- if (static_cast<nsPNGDecoder*>(mContainedDecoder.get())->HasValidInfo() && -- static_cast<nsPNGDecoder*>(mContainedDecoder.get())->GetPixelDepth() != 32) { -+ if (!static_cast<nsPNGDecoder*>(mContainedDecoder.get())->IsValidICO()) { - PostDataError(); - } - return; - } - - // We've processed all of the icon dir entries and are within the - // bitmap info size - if (!mIsPNG && mCurrIcon == mNumIcons && mPos >= mImageOffset && -diff --git a/modules/libpr0n/decoders/nsPNGDecoder.h b/modules/libpr0n/decoders/nsPNGDecoder.h ---- a/modules/libpr0n/decoders/nsPNGDecoder.h -+++ b/modules/libpr0n/decoders/nsPNGDecoder.h -@@ -68,29 +68,35 @@ public: - - void CreateFrame(png_uint_32 x_offset, png_uint_32 y_offset, - PRInt32 width, PRInt32 height, - gfxASurface::gfxImageFormat format); - void SetAnimFrameInfo(); - - void EndImageFrame(); - -- // Checks if the info header contains valid information -- bool HasValidInfo() const -+ // Check if PNG is valid ICO (32bpp RGBA) -+ // http://blogs.msdn.com/b/oldnewthing/archive/2010/10/22/10079192.aspx -+ bool IsValidICO() const - { -- return mInfo && mInfo->valid; -- } -+ png_uint_32 -+ png_width, // Unused -+ png_height; // Unused - -- // Obtain the pixel depth if available or 0 otherwise -- PRInt32 GetPixelDepth() const -- { -- if (!mInfo) { -- return 0; -+ int png_bit_depth, -+ png_color_type; -+ -+ if (png_get_IHDR(mPNG, mInfo, &png_width, &png_height, &png_bit_depth, -+ &png_color_type, NULL, NULL, NULL)) { -+ -+ return (png_color_type == PNG_COLOR_TYPE_RGB_ALPHA && -+ png_bit_depth == 8); -+ } else { -+ return false; - } -- return mInfo->pixel_depth; - } - - public: - png_structp mPNG; - png_infop mInfo; - nsIntRect mFrameRect; - PRUint8 *mCMSLine; - PRUint8 *interlacebuf; - - |