sc/source/core/tool/formulagroup.cxx | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-)
New commits: commit 67d17c60529f41e422db4565dc5a136e02ec48ed Author: Dennis Francis <dennis.fran...@collabora.co.uk> Date: Fri Nov 17 14:05:56 2017 +0530 Type check the tokens before reuse If the exisiting token is of wrong type, create and use a fresh new token instead. Change-Id: I348b0972306497dfe7eae0655c9b93d5830cb740 diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx index e77554d89805..326392f6099e 100644 --- a/sc/source/core/tool/formulagroup.cxx +++ b/sc/source/core/tool/formulagroup.cxx @@ -206,13 +206,26 @@ public: if ( !pTargetTok ) aCode2.AddString(rPool.intern(OUString(pStr))); else - pTargetTok->SetString(rPool.intern(OUString(pStr))); + { + if ( pTargetTok->GetType() == formula::svString ) + pTargetTok->SetString(rPool.intern(OUString(pStr))); + else + { + formula::FormulaStringToken* pStrTok = new formula::FormulaStringToken(rPool.intern(OUString(pStr))); + aCode2.ReplaceToken(nTokIdx, pStrTok, formula::FormulaTokenArray::CODE_ONLY); + } + } } else if (rtl::math::isNan(fVal)) { // Value of NaN represents an empty cell. if ( !pTargetTok ) aCode2.AddToken(ScEmptyCellToken(false, false)); + else if ( pTargetTok->GetType() != formula::svEmptyCell ) + { + ScEmptyCellToken* pEmptyTok = new ScEmptyCellToken(false, false); + aCode2.ReplaceToken(nTokIdx, pEmptyTok, formula::FormulaTokenArray::CODE_ONLY); + } } else { @@ -220,7 +233,15 @@ public: if ( !pTargetTok ) aCode2.AddDouble(fVal); else - pTargetTok->GetDoubleAsReference() = fVal; + { + if ( pTargetTok->GetType() == formula::svDouble ) + pTargetTok->GetDoubleAsReference() = fVal; + else + { + formula::FormulaDoubleToken* pDoubleTok = new formula::FormulaDoubleToken( fVal ); + aCode2.ReplaceToken(nTokIdx, pDoubleTok, formula::FormulaTokenArray::CODE_ONLY); + } + } } } break; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits