From 9013666c5ad32c5733be7ae27e872ff0d1b3db7b Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 14 Jan 2021 09:55:41 +0000 Subject: cid#1471346 Uncaught exception MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I535affd6597636aa32e1cf9c6005238f9503ef6b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109266 Tested-by: Jenkins Reviewed-by: Caolán McNamara --- tools/source/generic/poly.cxx | 4 +-- tools/source/generic/poly2.cxx | 4 +-- tools/source/stream/vcompat.cxx | 69 +++++++++++++++++++++-------------------- 3 files changed, 39 insertions(+), 38 deletions(-) (limited to 'tools') diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx index 7e09e2a75566..9d06055150b4 100644 --- a/tools/source/generic/poly.cxx +++ b/tools/source/generic/poly.cxx @@ -1667,7 +1667,7 @@ void Polygon::ImplRead( SvStream& rIStream ) void Polygon::Read( SvStream& rIStream ) { - VersionCompat aCompat( rIStream, StreamMode::READ ); + VersionCompatRead aCompat(rIStream); ImplRead( rIStream ); } @@ -1684,7 +1684,7 @@ void Polygon::ImplWrite( SvStream& rOStream ) const void Polygon::Write( SvStream& rOStream ) const { - VersionCompat aCompat( rOStream, StreamMode::WRITE, 1 ); + VersionCompatWrite aCompat(rOStream, 1); ImplWrite( rOStream ); } diff --git a/tools/source/generic/poly2.cxx b/tools/source/generic/poly2.cxx index 285044b6fcc6..631e88caf401 100644 --- a/tools/source/generic/poly2.cxx +++ b/tools/source/generic/poly2.cxx @@ -427,7 +427,7 @@ SvStream& WritePolyPolygon( SvStream& rOStream, const tools::PolyPolygon& rPolyP void PolyPolygon::Read( SvStream& rIStream ) { - VersionCompat aCompat( rIStream, StreamMode::READ ); + VersionCompatRead aCompat(rIStream); sal_uInt16 nPolyCount(0); @@ -460,7 +460,7 @@ void PolyPolygon::Read( SvStream& rIStream ) void PolyPolygon::Write( SvStream& rOStream ) const { - VersionCompat aCompat( rOStream, StreamMode::WRITE, 1 ); + VersionCompatWrite aCompat(rOStream, 1); // Write number of polygons sal_uInt16 nPolyCount = mpImplPolyPolygon->mvPolyAry.size(); diff --git a/tools/source/stream/vcompat.cxx b/tools/source/stream/vcompat.cxx index a63440701360..bf85c0c9a4cf 100644 --- a/tools/source/stream/vcompat.cxx +++ b/tools/source/stream/vcompat.cxx @@ -20,48 +20,49 @@ #include #include -VersionCompat::VersionCompat( SvStream& rStm, StreamMode nStreamMode, sal_uInt16 nVersion ) : - mpRWStm ( &rStm ), - mnCompatPos ( 0 ), - mnTotalSize ( 0 ), - mnStmMode ( nStreamMode ), - mnVersion ( nVersion ) +VersionCompatRead::VersionCompatRead(SvStream& rStm) + : mrRStm(rStm) + , mnCompatPos(0) + , mnTotalSize(0) + , mnVersion(1) { - if( mpRWStm->GetError() ) + if (mrRStm.GetError()) return; - if( StreamMode::WRITE == mnStmMode ) - { - mpRWStm->WriteUInt16( mnVersion ); - mnCompatPos = mpRWStm->Tell(); - mnTotalSize = mnCompatPos + 4; - mpRWStm->SeekRel( 4 ); - } - else - { - mpRWStm->ReadUInt16( mnVersion ); - mpRWStm->ReadUInt32( mnTotalSize ); - mnCompatPos = mpRWStm->Tell(); - } + mrRStm.ReadUInt16(mnVersion); + mrRStm.ReadUInt32(mnTotalSize); + mnCompatPos = mrRStm.Tell(); } -VersionCompat::~VersionCompat() +VersionCompatWrite::VersionCompatWrite(SvStream& rStm, sal_uInt16 nVersion) + : mrWStm(rStm) + , mnCompatPos(0) + , mnTotalSize(0) { - if( StreamMode::WRITE == mnStmMode ) - { - const sal_uInt32 nEndPos = mpRWStm->Tell(); + if (mrWStm.GetError()) + return; + + mrWStm.WriteUInt16(nVersion); + mnCompatPos = mrWStm.Tell(); + mnTotalSize = mnCompatPos + 4; + mrWStm.SeekRel(4); +} + +VersionCompatRead::~VersionCompatRead() +{ + const sal_uInt32 nReadSize = mrRStm.Tell() - mnCompatPos; + + if (mnTotalSize > nReadSize) + mrRStm.SeekRel(mnTotalSize - nReadSize); +} - mpRWStm->Seek( mnCompatPos ); - mpRWStm->WriteUInt32( nEndPos - mnTotalSize ); - mpRWStm->Seek( nEndPos ); - } - else - { - const sal_uInt32 nReadSize = mpRWStm->Tell() - mnCompatPos; +VersionCompatWrite::~VersionCompatWrite() +{ + const sal_uInt32 nEndPos = mrWStm.Tell(); - if( mnTotalSize > nReadSize ) - mpRWStm->SeekRel( mnTotalSize - nReadSize ); - } + mrWStm.Seek(mnCompatPos); + mrWStm.WriteUInt32(nEndPos - mnTotalSize); + mrWStm.Seek(nEndPos); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit