diff options
author | Caolán McNamara <caolanm@redhat.com> | 2017-11-06 09:55:42 +0000 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2017-11-06 16:10:50 +0100 |
commit | 4428c662765464e7f461101887f0141fde4ba4ef (patch) | |
tree | 15dbd2cafc3e88daa84b7d84a961978db575a9df /vcl | |
parent | sw: ODF import: default as-char shapes to vertical-pos="top" (diff) | |
download | core-4428c662765464e7f461101887f0141fde4ba4ef.tar.gz core-4428c662765464e7f461101887f0141fde4ba4ef.zip |
ofz#4076 bad palette READ
Change-Id: I54943d96baa6e2309bbf2cd3b6d8bcada2b76952
Reviewed-on: https://gerrit.libreoffice.org/44353
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/gdi/pngread.cxx | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/vcl/source/gdi/pngread.cxx b/vcl/source/gdi/pngread.cxx index 40d4085f56ff..62172d12a8c5 100644 --- a/vcl/source/gdi/pngread.cxx +++ b/vcl/source/gdi/pngread.cxx @@ -123,6 +123,7 @@ private: bool mbGrayScale : 1; bool mbzCodecInUse : 1; bool mbStatus : 1; + bool mbIDATStarted : 1; // true if IDAT seen bool mbIDAT : 1; // true if finished with enough IDAT chunks bool mbGamma : 1; // true if Gamma Correction available bool mbpHYs : 1; // true if physical size of pixel available @@ -201,6 +202,7 @@ PNGReaderImpl::PNGReaderImpl( SvStream& rPNGStream ) mbGrayScale( false ), mbzCodecInUse ( false ), mbStatus( true ), + mbIDATStarted( false ), mbIDAT( false ), mbGamma ( false ), mbpHYs ( false ), @@ -364,7 +366,7 @@ BitmapEx PNGReaderImpl::GetBitmapEx( const Size& rPreviewSizeHint ) case PNGCHUNK_PLTE : { - if ( !mbPalette ) + if (!mbPalette && !mbIDATStarted) mbStatus = ImplReadPalette(); } break; @@ -483,7 +485,7 @@ bool PNGReaderImpl::ImplReadHeader( const Size& rPreviewSizeHint ) } mbPalette = true; - mbIDAT = mbAlphaChannel = mbTransparent = false; + mbIDATStarted = mbIDAT = mbAlphaChannel = mbTransparent = false; mbGrayScale = mbRGBTriple = false; mnTargetDepth = mnPngDepth; sal_uInt64 nScansize64 = ( ( static_cast< sal_uInt64 >( maOrigSize.Width() ) * mnPngDepth ) + 7 ) >> 3; @@ -898,6 +900,8 @@ void PNGReaderImpl::ImplReadIDAT() { if( mnChunkLen > 0 ) { + mbIDATStarted = true; + if ( !mbzCodecInUse ) { mbzCodecInUse = true; |