From 832ba85ebfa6d546aa4c3e373987f767a104f192 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Fri, 16 Feb 2018 12:54:52 +0000 Subject: ofz#5951 speed up wks fuzzing, skip CalcAfterLoad MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I942480742da9aec18409b2d31dd68a01275682f9 Reviewed-on: https://gerrit.libreoffice.org/49859 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- sc/source/filter/excel/excel.cxx | 16 ---------------- sc/source/filter/inc/lotimpop.hxx | 1 + sc/source/filter/lotus/lotread.cxx | 35 +++++++++++++++++++++++++++++++++-- sc/source/filter/lotus/lotus.cxx | 4 +--- 4 files changed, 35 insertions(+), 21 deletions(-) (limited to 'sc') diff --git a/sc/source/filter/excel/excel.cxx b/sc/source/filter/excel/excel.cxx index 9cfa5493e91f..797124a280d0 100644 --- a/sc/source/filter/excel/excel.cxx +++ b/sc/source/filter/excel/excel.cxx @@ -271,22 +271,6 @@ extern "C" SAL_DLLPUBLIC_EXPORT bool TestImportXLS(SvStream& rStream) return bRet; } -extern "C" SAL_DLLPUBLIC_EXPORT bool TestImportWKS(SvStream& rStream) -{ - ScDLL::Init(); - SfxMedium aMedium; - css::uno::Reference xStm(new utl::OInputStreamWrapper(rStream)); - aMedium.GetItemSet()->Put(SfxUnoAnyItem(SID_INPUTSTREAM, css::uno::makeAny(xStm))); - ScDocument aDocument; - ScDocOptions aDocOpt = aDocument.GetDocOptions(); - aDocOpt.SetLookUpColRowNames(false); - aDocument.SetDocOptions(aDocOpt); - aDocument.MakeTable(0); - aDocument.EnableExecuteLink(false); - aDocument.SetInsertingFromOtherDoc(true); - return ScFormatFilter::Get().ScImportLotus123(aMedium, &aDocument, RTL_TEXTENCODING_ASCII_US) == ERRCODE_NONE; -} - extern "C" SAL_DLLPUBLIC_EXPORT bool TestImportDIF(SvStream &rStream) { ScDLL::Init(); diff --git a/sc/source/filter/inc/lotimpop.hxx b/sc/source/filter/inc/lotimpop.hxx index 894a89c26e7a..17fca962caf6 100644 --- a/sc/source/filter/inc/lotimpop.hxx +++ b/sc/source/filter/inc/lotimpop.hxx @@ -79,6 +79,7 @@ public: virtual ~ImportLotus() override; + ErrCode parse(); //parse + CalcAfterLoad ErrCode Read() override; ErrCode Read( SvStream& ); // special for *.fm3 files }; diff --git a/sc/source/filter/lotus/lotread.cxx b/sc/source/filter/lotus/lotread.cxx index 23f9823629e1..6caefd0337d1 100644 --- a/sc/source/filter/lotus/lotread.cxx +++ b/sc/source/filter/lotus/lotread.cxx @@ -18,7 +18,9 @@ */ #include +#include +#include #include #include #include "lotfilter.hxx" @@ -28,7 +30,7 @@ class ScFormulaCell; -ErrCode ImportLotus::Read() +ErrCode ImportLotus::parse() { enum STATE { @@ -223,8 +225,13 @@ ErrCode ImportLotus::Read() } } - pD->CalcAfterLoad(); + return eRet; +} +ErrCode ImportLotus::Read() +{ + ErrCode eRet = parse(); + pD->CalcAfterLoad(); return eRet; } @@ -307,4 +314,28 @@ ErrCode ImportLotus::Read(SvStream& rIn) return eRet; } +extern "C" SAL_DLLPUBLIC_EXPORT bool TestImportWKS(SvStream& rStream) +{ + ScDLL::Init(); + ScDocument aDocument; + ScDocOptions aDocOpt = aDocument.GetDocOptions(); + aDocOpt.SetLookUpColRowNames(false); + aDocument.SetDocOptions(aDocOpt); + aDocument.MakeTable(0); + aDocument.EnableExecuteLink(false); + aDocument.SetInsertingFromOtherDoc(true); + + LotusContext aContext; + ImportLotus aLotusImport(aContext, rStream, &aDocument, RTL_TEXTENCODING_ASCII_US); + + ErrCode eRet = aLotusImport.parse(); + if (eRet == ErrCode(0xFFFFFFFF)) + { + rStream.Seek(0); + eRet = ScImportLotus123old(aContext, rStream, &aDocument, RTL_TEXTENCODING_ASCII_US); + } + + return eRet == ERRCODE_NONE; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/lotus/lotus.cxx b/sc/source/filter/lotus/lotus.cxx index 7228153dbabb..5b7260434343 100644 --- a/sc/source/filter/lotus/lotus.cxx +++ b/sc/source/filter/lotus/lotus.cxx @@ -22,7 +22,6 @@ #include #include -#include #include #include @@ -43,9 +42,8 @@ ErrCode ScFormatFilterPluginImpl::ScImportLotus123( SfxMedium& rMedium, ScDocume ImportLotus aLotusImport(aContext, *pStream, pDocument, eSrc); - const bool bWithWK3 = utl::ConfigManager::IsFuzzing() || ScFilterOptions().GetWK3Flag(); ErrCode eRet; - if (bWithWK3) + if (ScFilterOptions().GetWK3Flag()) eRet = aLotusImport.Read(); else eRet = ErrCode(0xFFFFFFFF); // force WK1 /WKS -- cgit v1.2.3