summaryrefslogtreecommitdiff
path: root/sc/source/filter/oox/formulabuffer.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/oox/formulabuffer.cxx')
-rw-r--r--sc/source/filter/oox/formulabuffer.cxx12
1 files changed, 6 insertions, 6 deletions
diff --git a/sc/source/filter/oox/formulabuffer.cxx b/sc/source/filter/oox/formulabuffer.cxx
index 7472d3d78255..d1cf118d13d2 100644
--- a/sc/source/filter/oox/formulabuffer.cxx
+++ b/sc/source/filter/oox/formulabuffer.cxx
@@ -25,6 +25,7 @@
#include "tokenarray.hxx"
#include "sharedformulagroups.hxx"
#include "externalrefmgr.hxx"
+#include "tokenstringcontext.hxx"
#include "oox/token/tokens.hxx"
using namespace com::sun::star;
@@ -56,7 +57,8 @@ public:
Item() : mnRow(-1), mpCell(NULL) {}
};
- CachedTokenArray( ScDocument& rDoc ) : mrDoc(rDoc) {}
+ CachedTokenArray( ScDocument& rDoc ) :
+ mrDoc(rDoc), maCxt(&rDoc, formula::FormulaGrammar::GRAM_OOXML) {}
~CachedTokenArray()
{
@@ -73,11 +75,8 @@ public:
return NULL;
Item& rCached = *it->second;
- ScCompiler aComp(&mrDoc, rPos, *rCached.mpCell->GetCode());
- aComp.SetGrammar(formula::FormulaGrammar::GRAM_OOXML);
- OUStringBuffer aBuf;
- aComp.CreateStringFromTokenArray(aBuf);
- OUString aPredicted = aBuf.makeStringAndClear();
+ const ScTokenArray& rCode = *rCached.mpCell->GetCode();
+ OUString aPredicted = rCode.CreateString(maCxt, rPos);
if (rFormula == aPredicted)
return &rCached;
@@ -108,6 +107,7 @@ private:
typedef boost::unordered_map<SCCOL, Item*> ColCacheType;
ColCacheType maCache;
ScDocument& mrDoc;
+ sc::TokenStringContext maCxt;
};
void applySharedFormulas(