[Libreoffice-commits] core.git: filter/source
Caolán McNamara
caolanm at redhat.com
Wed Sep 20 15:25:34 UTC 2017
filter/source/graphicfilter/itiff/itiff.cxx | 31 +++++++---------------------
1 file changed, 8 insertions(+), 23 deletions(-)
New commits:
commit d15109f745b87ce849c8ad3019635240c08d7982
Author: Caolán McNamara <caolanm at redhat.com>
Date: Wed Sep 20 11:57:00 2017 +0100
repeat for StripOffsets
Change-Id: I87810b2ee99dc5fce12062e5ebdc97e294d38542
Reviewed-on: https://gerrit.libreoffice.org/42543
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx
index c52116f490c5..5d3efc46123d 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -81,8 +81,7 @@ private:
sal_uInt32 nOrientation;
sal_uInt32 nSamplesPerPixel; // number of layers
sal_uInt32 nRowsPerStrip; // if it's not compressed: number of rows per Strip
- sal_uInt32* pStripByteCounts; // if compressed (in a certain way): size of the strips
- sal_uInt32 nNumStripByteCounts; // number of entries in the field above
+ std::vector<sal_uInt32> aStripByteCounts; // if compressed (in a certain way): size of the strips
sal_uInt32 nMinSampleValue;
sal_uInt32 nMaxSampleValue;
double fXResolution; // X-resolution or 0.0
@@ -151,8 +150,6 @@ public:
, nOrientation(1)
, nSamplesPerPixel(1)
, nRowsPerStrip(0xffffffff)
- , pStripByteCounts(nullptr)
- , nNumStripByteCounts(0)
, nMinSampleValue(0)
, nMaxSampleValue(0)
, fXResolution(0.0)
@@ -402,34 +399,23 @@ void TIFFReader::ReadTagData( sal_uInt16 nTagType, sal_uInt32 nDataLen)
break;
case 0x0117: { // Strip Byte Counts
- sal_uInt32* pOldSBC = pStripByteCounts;
- if (pOldSBC == nullptr)
- nNumStripByteCounts = 0; // to be on the safe side
- sal_uInt32 nOldNumSBC = nNumStripByteCounts;
+ sal_uInt32 nOldNumSBC = aStripByteCounts.size();
nDataLen += nOldNumSBC;
size_t const nMaxAllocAllowed = SAL_MAX_UINT32 / sizeof(sal_uInt32);
size_t nMaxRecordsAvailable = pTIFF->remainingSize() / DataTypeSize();
if (nDataLen > nOldNumSBC && nDataLen < nMaxAllocAllowed &&
(nDataLen - nOldNumSBC) <= nMaxRecordsAvailable)
{
- nNumStripByteCounts = nDataLen;
try
{
- pStripByteCounts = new sal_uInt32[nNumStripByteCounts];
+ aStripByteCounts.resize(nDataLen);
+ for (sal_uInt32 i = nOldNumSBC; i < aStripByteCounts.size(); ++i)
+ aStripByteCounts[i] = ReadIntData();
}
catch (const std::bad_alloc &)
{
- pStripByteCounts = nullptr;
- nNumStripByteCounts = 0;
+ aStripByteCounts.clear();
}
- if ( pStripByteCounts )
- {
- for (sal_uInt32 i = 0; i < nOldNumSBC; ++i)
- pStripByteCounts[ i ] = pOldSBC[ i ];
- for (sal_uInt32 i = nOldNumSBC; i < nNumStripByteCounts; ++i)
- pStripByteCounts[ i ] = ReadIntData();
- }
- delete[] pOldSBC;
}
SAL_INFO("filter.tiff","StripByteCounts (Number:) " << nDataLen);
break;
@@ -1282,7 +1268,6 @@ bool TIFFReader::ReadTIFF(SvStream & rTIFF, Graphic & rGraphic )
nOrientation = 1;
nSamplesPerPixel = 1; // default value according to the documentation
nRowsPerStrip = 0xffffffff; // default value according to the documentation
- nNumStripByteCounts = 0;
nMinSampleValue = 0; // default value according to the documentation
nMaxSampleValue = 0;
fXResolution = 0.0;
@@ -1296,7 +1281,7 @@ bool TIFFReader::ReadTIFF(SvStream & rTIFF, Graphic & rGraphic )
xAcc.reset();
aStripOffsets.clear();
- pStripByteCounts = nullptr;
+ aStripByteCounts.clear();
pMap[ 0 ] = pMap[ 1 ] = pMap[ 2 ] = pMap[ 3 ] = nullptr;
pTIFF->ReadUInt16( nNumTags );
@@ -1444,7 +1429,7 @@ bool TIFFReader::ReadTIFF(SvStream & rTIFF, Graphic & rGraphic )
delete[] pMap[ i ];
xColorMap.reset();
aStripOffsets.clear();
- delete[] pStripByteCounts;
+ aStripByteCounts.clear();
}
}
More information about the Libreoffice-commits
mailing list