tdf#89319 remove redundant file seekings in XLS export
Normally StartRecord() is called with closed records and with end position of the stream set by EndRecord(), so the mrStrm.Seek( STREAM_SEEK_TO_END ) in the InitRecord() is a redundant call. The patch removes this call, and sets it only for the non redundant cases: when there is an unclosed record in StartRecord() or a continue record in StartContinue(). Change-Id: Iecbcaf01cbfe6094fa73d5ed41dba5f01417edb3
This commit is contained in:
@@ -109,6 +109,8 @@ void XclExpStream::StartRecord( sal_uInt16 nRecId, sal_Size nRecSize )
|
||||
DisableEncryption();
|
||||
mnMaxContSize = mnCurrMaxSize = mnMaxRecSize;
|
||||
mnPredictSize = nRecSize;
|
||||
if ( mbInRec )
|
||||
mrStrm.Seek( STREAM_SEEK_TO_END );
|
||||
mbInRec = true;
|
||||
InitRecord( nRecId );
|
||||
SetSliceSize( 0 );
|
||||
@@ -380,7 +382,7 @@ sal_uInt64 XclExpStream::SetSvStreamPos(sal_uInt64 const nPos)
|
||||
|
||||
void XclExpStream::InitRecord( sal_uInt16 nRecId )
|
||||
{
|
||||
mrStrm.Seek( STREAM_SEEK_TO_END );
|
||||
OSL_ENSURE( mrStrm.remainingSize() == 0, "XclExpStream::InitRecord - not in end position" );
|
||||
mrStrm.WriteUInt16( nRecId );
|
||||
|
||||
mnLastSizePos = mrStrm.Tell();
|
||||
@@ -417,6 +419,7 @@ void XclExpStream::StartContinue()
|
||||
UpdateRecSize();
|
||||
mnCurrMaxSize = mnMaxContSize;
|
||||
mnPredictSize -= mnCurrSize;
|
||||
mrStrm.Seek( STREAM_SEEK_TO_END );
|
||||
InitRecord( EXC_ID_CONT );
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user