summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2015-06-25 15:37:08 +0200
committerEike Rathke <erack@redhat.com>2015-06-25 15:45:28 +0200
commit0750e49471f686480be0a9470a0a0bf3186b2347 (patch)
tree78112de0a50baf4b414a4ecb8a4db9f46ae05ecc /sc
parent53d8b34465e28909491def39bfd11dfb83876939 (diff)
TableRef: compile named expression into RPN once to populate information
Change-Id: Id41ca0bd6adc8152c29be4d89e9361d8fb2ffe4e (cherry picked from commit 420ed9cb1d7f164be88ee2a01f79372744ed5f03)
Diffstat (limited to 'sc')
-rw-r--r--sc/source/filter/oox/defnamesbuffer.cxx7
1 files changed, 7 insertions, 0 deletions
diff --git a/sc/source/filter/oox/defnamesbuffer.cxx b/sc/source/filter/oox/defnamesbuffer.cxx
index a24c96a67b2a..fa2a0cf6b685 100644
--- a/sc/source/filter/oox/defnamesbuffer.cxx
+++ b/sc/source/filter/oox/defnamesbuffer.cxx
@@ -387,6 +387,13 @@ std::unique_ptr<ScTokenArray> DefinedName::getScTokens()
ScCompiler aCompiler(&getScDocument(), ScAddress(0, 0, mnCalcSheet));
aCompiler.SetGrammar(formula::FormulaGrammar::GRAM_OOXML);
std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(maModel.maFormula));
+ // Compile the tokens into RPN once to populate information into tokens
+ // where necessary, e.g. for TableRef inner reference. RPN can be discarded
+ // after, a resulting error must be reset.
+ sal_uInt16 nErr = pArray->GetCodeError();
+ aCompiler.CompileTokenArray();
+ pArray->DelRPN();
+ pArray->SetCodeError(nErr);
return pArray;
}