[Libreoffice-commits] .: sc/source

Eike Rathke erack at kemper.freedesktop.org
Tue Jul 3 12:41:06 PDT 2012


 sc/source/core/data/cell.cxx |   11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

New commits:
commit 2bf5edb1893df2d253ea0b7cf20f3bb7c62ae7f1
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Jul 3 21:40:42 2012 +0200

    do not attempt to compile running formula cell (fdo#51601 related)
    
    2fb377c19f8ae38e7ec649af1343bbd64b70a16b introduced compilation of
    a formula cell while it is interpreted, ignoring the comment just above why
    that does NOT work ...
    
    This removes the portion that was responsible for the crash. Though import
    changed and this did not crash anymore on opening the testcase documents, the
    questionable code is still wrong and therefor removed.

diff --git a/sc/source/core/data/cell.cxx b/sc/source/core/data/cell.cxx
index 338b0ab..c4846c0 100644
--- a/sc/source/core/data/cell.cxx
+++ b/sc/source/core/data/cell.cxx
@@ -1435,7 +1435,9 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam )
         // #i11719# no UPN and no error and no token code but result string present
         // => interpretation of this cell during name-compilation and unknown names
         // => can't exchange underlying code array in CompileTokenArray() /
-        // Compile() because interpreter's token iterator would crash.
+        // Compile() because interpreter's token iterator would crash or pCode
+        // would be deleted twice if this cell was interpreted during
+        // compilation.
         // This should only be a temporary condition and, since we set an
         // error, if ran into it again we'd bump into the dirty-clearing
         // condition further down.
@@ -1444,12 +1446,7 @@ void ScFormulaCell::InterpretTail( ScInterpretTailParameter eTailParam )
             pCode->SetCodeError( errNoCode );
             // This is worth an assertion; if encountered in daily work
             // documents we might need another solution. Or just confirm correctness.
-            OSL_FAIL( "ScFormulaCell::Interpret: no UPN, no error, no token, but string -> Try compiling it." );
-            // Force Compilation
-            rtl::OUString aFormula = aResult.GetHybridFormula();
-            aResult.SetHybridFormula( rtl::OUString() );
-            Compile( aFormula );
-            InterpretTail( eTailParam );
+            OSL_FAIL( "ScFormulaCell::Interpret: no UPN, no error, no token, but hybrid formula string" );
             return;
         }
         CompileTokenArray();


More information about the Libreoffice-commits mailing list