summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLászló Németh <laszlo.nemeth@collabora.com>2015-02-11 21:45:13 +0100
committerLászló Németh <laszlo.nemeth@collabora.com>2015-02-11 22:06:58 +0100
commit8e2293e06adba3f22e824acad99983fb5b997e4d (patch)
tree0c91fd8598d98ca89c3a3503411e654091a2a13e
parentee3f2409b845e088ecc88874ba29b5bafd6cd025 (diff)
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
-rw-r--r--sc/source/filter/excel/xestream.cxx5
1 files changed, 4 insertions, 1 deletions
diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx
index 48153ebe41e5..f104db20e63f 100644
--- a/sc/source/filter/excel/xestream.cxx
+++ b/sc/source/filter/excel/xestream.cxx
@@ -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 );
}