Date: Sunday, January 29, 2012 @ 16:52:11 Author: ibiru Revision: 148013
libpng 1.5 rebuild Added: xulrunner/trunk/5007_fix_libpr0n_nsPNGDecoder.patch Modified: xulrunner/trunk/PKGBUILD -------------------------------------+ 5007_fix_libpr0n_nsPNGDecoder.patch | 81 ++++++++++++++++++++++++++++++++++ PKGBUILD | 10 ++-- 2 files changed, 88 insertions(+), 3 deletions(-) Added: 5007_fix_libpr0n_nsPNGDecoder.patch =================================================================== --- 5007_fix_libpr0n_nsPNGDecoder.patch (rev 0) +++ 5007_fix_libpr0n_nsPNGDecoder.patch 2012-01-29 21:52:11 UTC (rev 148013) @@ -0,0 +1,81 @@ +# HG changeset patch +# User Glenn Randers-Pehrson <[email protected]> +# 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; + + Modified: PKGBUILD =================================================================== --- PKGBUILD 2012-01-29 20:23:12 UTC (rev 148012) +++ PKGBUILD 2012-01-29 21:52:11 UTC (rev 148013) @@ -3,7 +3,7 @@ # Contributor: Alexander Baldeck <[email protected]> pkgname=xulrunner pkgver=9.0.1 -pkgrel=1 +pkgrel=2 pkgdesc="Mozilla Runtime Environment" arch=('i686' 'x86_64') license=('MPL' 'GPL' 'LGPL') @@ -12,12 +12,14 @@ url="http://wiki.mozilla.org/XUL:Xul_Runner" source=(ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases//$pkgver/source/firefox-$pkgver.source.tar.bz2 mozconfig - mozilla-pkgconfig.patch) + mozilla-pkgconfig.patch + 5007_fix_libpr0n_nsPNGDecoder.patch) options=('!emptydirs') replaces=('xulrunner-oss') md5sums=('7cf2bd379792a9b232267c6a79680566' '8dfb78c5bd0581c8cf4753813132bf0b' - '27271ce647a83906ef7a24605e840d61') + '27271ce647a83906ef7a24605e840d61' + '6f3be4f4ac0217d0782b1a0770d80f28') build() { cd "$srcdir/mozilla-release" @@ -26,6 +28,8 @@ #fix libdir/sdkdir - fedora patch -Np1 -i "$srcdir/mozilla-pkgconfig.patch" + patch -Np1 -i "$srcdir/5007_fix_libpr0n_nsPNGDecoder.patch" + export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/xulrunner-$pkgver" export PYTHON="/usr/bin/python2"
