summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-02-16 12:54:52 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-02-16 16:40:19 +0100
commit832ba85ebfa6d546aa4c3e373987f767a104f192 (patch)
tree4ead9c4e98c58fa9525bdabac98a2f775e90939d /sc
parentb809df5d7f82a291356aee147f338cde5579e839 (diff)
ofz#5951 speed up wks fuzzing, skip CalcAfterLoad
Change-Id: I942480742da9aec18409b2d31dd68a01275682f9 Reviewed-on: https://gerrit.libreoffice.org/49859 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/filter/excel/excel.cxx16
-rw-r--r--sc/source/filter/inc/lotimpop.hxx1
-rw-r--r--sc/source/filter/lotus/lotread.cxx35
-rw-r--r--sc/source/filter/lotus/lotus.cxx4
4 files changed, 35 insertions, 21 deletions
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<css::io::XInputStream> 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 <document.hxx>
+#include <docoptio.hxx>
+#include <scdll.hxx>
#include <scerrors.hxx>
#include <root.hxx>
#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 <sfx2/docfile.hxx>
#include <tools/urlobj.hxx>
-#include <unotools/configmgr.hxx>
#include <scerrors.hxx>
#include <root.hxx>
@@ -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