[Libreoffice-commits] core.git: sc/source sw/source

Caolán McNamara caolanm at redhat.com
Thu Nov 2 20:25:48 UTC 2017


 sc/source/filter/excel/excel.cxx |    7 +++++--
 sw/source/filter/ww8/ww8par.cxx  |   24 +++++++++++++++++++-----
 sw/source/filter/ww8/ww8par.hxx  |    2 +-
 3 files changed, 25 insertions(+), 8 deletions(-)

New commits:
commit cd7a2e8c60d67701a311942f0abfe9afaae822cf
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Nov 2 19:27:54 2017 +0000

    revert drop of SetBufferSize
    
    reported spike in load time, so still necessary I guess
    
    Change-Id: I38c139b85ed922af18674ac84263150407a3277f
    Reviewed-on: https://gerrit.libreoffice.org/44231
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/source/filter/excel/excel.cxx b/sc/source/filter/excel/excel.cxx
index cd396d4c299d..5f9addb25489 100644
--- a/sc/source/filter/excel/excel.cxx
+++ b/sc/source/filter/excel/excel.cxx
@@ -121,6 +121,8 @@ ErrCode ScFormatFilterPluginImpl::ScImportExcel( SfxMedium& rMedium, ScDocument*
     ErrCode eRet = SCERR_IMPORT_UNKNOWN_BIFF;
     if( pBookStrm )
     {
+        pBookStrm->SetBufferSize( 0x8000 );     // still needed?
+
         XclImpRootData aImpData( eBiff, rMedium, xRootStrg, *pDocument, RTL_TEXTENCODING_MS_1252 );
         std::unique_ptr< ImportExcel > xFilter;
         switch( eBiff )
@@ -167,8 +169,9 @@ static ErrCode lcl_ExportExcelBiff( SfxMedium& rMedium, ScDocument *pDocument,
 
     // open the "Book"/"Workbook" stream
     tools::SvRef<SotStorageStream> xStrgStrm = ScfTools::OpenStorageStreamWrite( xRootStrg, aStrmName );
-    if (!xStrgStrm.is() || xStrgStrm->GetError())
-        return SCERR_IMPORT_OPEN;
+    if( !xStrgStrm.is() || xStrgStrm->GetError() ) return SCERR_IMPORT_OPEN;
+
+    xStrgStrm->SetBufferSize( 0x8000 );     // still needed?
 
     ErrCode eRet = SCERR_IMPORT_UNKNOWN_BIFF;
     XclExpRootData aExpData( bBiff8 ? EXC_BIFF8 : EXC_BIFF5, rMedium, xRootStrg, *pDocument, eNach );
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 5caf9c1772b3..c90803a6f969 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -6277,18 +6277,30 @@ extern "C" SAL_DLLPUBLIC_EXPORT bool SAL_CALL TestImportWW2(SvStream &rStream)
     return TestImportDOC(rStream, "WW6");
 }
 
-ErrCode WW8Reader::OpenMainStream(tools::SvRef<SotStorageStream>& rRef)
+ErrCode WW8Reader::OpenMainStream( tools::SvRef<SotStorageStream>& rRef, sal_uInt16& rBuffSize )
 {
     ErrCode nRet = ERR_SWG_READ_ERROR;
     OSL_ENSURE( pStg.get(), "Where is my Storage?" );
     rRef = pStg->OpenSotStream( "WordDocument", StreamMode::READ | StreamMode::SHARE_DENYALL);
-    if (rRef.is())
-        nRet = rRef->GetError();
+
+    if( rRef.is() )
+    {
+        if( ERRCODE_NONE == rRef->GetError() )
+        {
+            sal_uInt16 nOld = rRef->GetBufferSize();
+            rRef->SetBufferSize( rBuffSize );
+            rBuffSize = nOld;
+            nRet = ERRCODE_NONE;
+        }
+        else
+            nRet = rRef->GetError();
+    }
     return nRet;
 }
 
 ErrCode WW8Reader::Read(SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, const OUString & /* FileName */)
 {
+    sal_uInt16 nOldBuffSize = 32768;
     bool bNew = !bInsertMode; // New Doc (no inserting)
 
     tools::SvRef<SotStorageStream> refStrm; // So that no one else can steal the Stream
@@ -6317,7 +6329,7 @@ ErrCode WW8Reader::Read(SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, cons
 
         if( pStg.is() )
         {
-            nRet = OpenMainStream(refStrm);
+            nRet = OpenMainStream( refStrm, nOldBuffSize );
             pIn = refStrm.get();
         }
         else
@@ -6351,6 +6363,7 @@ ErrCode WW8Reader::Read(SwDoc &rDoc, const OUString& rBaseURL, SwPaM &rPaM, cons
 
         if( refStrm.is() )
         {
+            refStrm->SetBufferSize( nOldBuffSize );
             refStrm.clear();
         }
         else
@@ -6378,8 +6391,9 @@ bool WW8Reader::ReadGlossaries(SwTextBlocks& rBlocks, bool bSaveRelFiles) const
 
     WW8Reader *pThis = const_cast<WW8Reader *>(this);
 
+    sal_uInt16 nOldBuffSize = 32768;
     tools::SvRef<SotStorageStream> refStrm;
-    if (!pThis->OpenMainStream(refStrm))
+    if (!pThis->OpenMainStream(refStrm, nOldBuffSize))
     {
         WW8Glossary aGloss( refStrm, 8, pStg.get() );
         bRet = aGloss.Load( rBlocks, bSaveRelFiles );
diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
index 868858c49570..5760b1ba1a46 100644
--- a/sw/source/filter/ww8/ww8par.hxx
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -131,7 +131,7 @@ struct WW8LFOInfo;
 class WW8Reader : public StgReader
 {
     virtual ErrCode Read(SwDoc &, const OUString& rBaseURL, SwPaM &, const OUString &) override;
-    ErrCode OpenMainStream(tools::SvRef<SotStorageStream>& rRef);
+    ErrCode OpenMainStream( tools::SvRef<SotStorageStream>& rRef, sal_uInt16& rBuffSize );
 public:
     virtual int GetReaderType() override;
 


More information about the Libreoffice-commits mailing list