sd/source/filter/ppt/propread.cxx | 17 ++++++----------- sfx2/source/doc/oleprops.cxx | 2 +- 2 files changed, 7 insertions(+), 12 deletions(-)
New commits: commit 92c940a530c1b43ed1ba2ff10343024f2bf2d69b Author: Caolán McNamara <caol...@redhat.com> Date: Sat Oct 21 15:38:38 2017 +0100 check seeks earlier Change-Id: Id392f2299b6bdacb9a71e94959d24d02417d571e Reviewed-on: https://gerrit.libreoffice.org/43657 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/sd/source/filter/ppt/propread.cxx b/sd/source/filter/ppt/propread.cxx index e473e1566e31..ed1f9e4923d2 100644 --- a/sd/source/filter/ppt/propread.cxx +++ b/sd/source/filter/ppt/propread.cxx @@ -321,12 +321,8 @@ void Section::GetDictionary(Dictionary& rDict) void Section::Read( SotStorageStream *pStrm ) { - sal_uInt32 nSecOfs, nPropSize, nStrmSize; - nSecOfs = pStrm->Tell(); - - pStrm->Seek( STREAM_SEEK_TO_END ); - nStrmSize = pStrm->Tell(); - pStrm->Seek( nSecOfs ); + sal_uInt32 nSecOfs = pStrm->Tell(); + sal_uInt32 nStrmSize = pStrm->remainingSize(); mnTextEnc = RTL_TEXTENCODING_MS_1252; sal_uInt32 nSecSize(0), nPropCount(0); @@ -339,15 +335,14 @@ void Section::Read( SotStorageStream *pStrm ) break; auto nCurrent = pStrm->Tell(); sal_uInt64 nOffset = nPropOfs + nSecOfs; - if (nOffset != pStrm->Seek(nOffset)) + if (!checkSeek(*pStrm, nOffset)) break; if ( nPropId ) // do not read dictionary { sal_uInt32 nPropType(0), nVectorCount(0); pStrm->ReadUInt32(nPropType); - nPropSize = 4; - + sal_uInt32 nPropSize = 4; if ( nPropType & VT_VECTOR ) { pStrm->ReadUInt32( nVectorCount ); @@ -436,7 +431,7 @@ void Section::Read( SotStorageStream *pStrm ) if ( ( nVectorCount - i ) > 1 ) { nOffset = nPropOfs + nSecOfs + nPropSize; - if (nOffset != pStrm->Seek(nOffset)) + if (!checkSeek(*pStrm, nOffset)) break; } } @@ -503,7 +498,7 @@ void Section::Read( SotStorageStream *pStrm ) if (!pStrm->good()) break; sal_uInt64 nPos = pStrm->Tell() + nSize; - if (nPos != pStrm->Seek(nPos)) + if (!checkSeek(*pStrm, nPos)) break; } sal_uInt32 nSize = pStrm->Tell(); diff --git a/sfx2/source/doc/oleprops.cxx b/sfx2/source/doc/oleprops.cxx index 7e412e6e2c9e..3045a90ba8c8 100644 --- a/sfx2/source/doc/oleprops.cxx +++ b/sfx2/source/doc/oleprops.cxx @@ -943,7 +943,7 @@ void SfxOleSection::ImplLoad( SvStream& rStrm ) // read property ID/position pairs typedef ::std::map< sal_Int32, sal_uInt32 > SfxOlePropPosMap; SfxOlePropPosMap aPropPosMap; - for( sal_Int32 nPropIdx = 0; (nPropIdx < nPropCount) && (rStrm.GetErrorCode() == ERRCODE_NONE) && !rStrm.IsEof(); ++nPropIdx ) + for (sal_Int32 nPropIdx = 0; nPropIdx < nPropCount && rStrm.good(); ++nPropIdx) { sal_Int32 nPropId(0); sal_uInt32 nPropPos(0);
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits