diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index 10c4c14..89b62a1 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -1038,7 +1038,10 @@ void ScFormulaCell::Compile( ScCompiler aComp(rCxt, aPos); pCode = aComp.CompileString( rFormula ); if ( pCodeOld ) + { delete pCodeOld; + fprintf(stderr, "%p deleting %p\n", this, pCodeOld); + } if( !pCode->GetCodeError() ) { if ( !pCode->GetLen() && !aResult.GetHybridFormula().isEmpty() && rFormula == aResult.GetHybridFormula() ) @@ -3499,12 +3502,17 @@ void ScFormulaCell::CompileNameFormula( sc::CompileFormulaContext& rCxt, bool bC SetHybridFormula(aFormula, rCxt.getGrammar()); } } - else if ( !pCode->GetLen() && !aResult.GetHybridFormula().isEmpty() ) + else { - rCxt.setGrammar(eTempGrammar); - Compile(rCxt, aResult.GetHybridFormula(), false); - aResult.SetToken( NULL); - SetDirty(); + fprintf(stderr, "%p getlen of %p b %d\n", this, pCode, !aResult.GetHybridFormula().isEmpty()); + fprintf(stderr, "%p getlen of %p a %d\n", this, pCode, !pCode->GetLen()); + if ( !pCode->GetLen() && !aResult.GetHybridFormula().isEmpty() ) + { + rCxt.setGrammar(eTempGrammar); + Compile(rCxt, aResult.GetHybridFormula(), false); + aResult.SetToken( NULL); + SetDirty(); + } } }