officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 +- sc/Module_sc.mk | 2 +- sc/qa/unit/bugfix-test.cxx | 13 +++++++++++++ sc/qa/unit/data/ods/tdf98657.ods |binary sc/source/core/tool/scmatrix.cxx | 12 +++++++++++- 5 files changed, 26 insertions(+), 3 deletions(-)
New commits: commit 0e59494525d8e94a9b7deeb63fcbb1c04801de4c Author: Jan Holesovsky <[email protected]> Date: Thu Mar 24 14:10:58 2016 +0100 Revert "disable the SW interpreter by default, tdf#98657" Now the root cause of tdf#98657 is fixed, hopefully we are good to enable the SW interpreter again... This reverts commit 70dad291a6baf1eff59b61f9d344c10018585dd4. diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs index 4052479..67b72cd 100644 --- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs +++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs @@ -5653,7 +5653,7 @@ <desc>Determines whether Software Interpreter can be used to speed up some operations on Calc formulas.</desc> </info> - <value>false</value> + <value>true</value> </prop> <prop oor:name="MacroRecorderMode" oor:type="xs:boolean" oor:nillable="false"> <info> commit 5d644eff8f593358f9f9d21949faa630d94e5665 Author: Jan Holesovsky <[email protected]> Date: Thu Mar 24 14:06:09 2016 +0100 tdf#98657: Fix a corner case when NaN's were added to ScFullMatrix. Change-Id: Id3befb82c39f9caacc908d664d42365ce6996054 diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 861532e..e0cbf5b 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -42,6 +42,7 @@ $(eval $(call gb_Module_add_check_targets,sc,\ Library_scqahelper \ $(if $(and $(filter $(COM),MSC),$(MERGELIBS)),, \ CppunitTest_sc_ucalc) \ + CppunitTest_sc_bugfix_test \ CppunitTest_sc_filters_test \ CppunitTest_sc_rangelst_test \ CppunitTest_sc_mark_test \ @@ -54,7 +55,6 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc, \ CppunitTest_sc_new_cond_format_api \ CppunitTest_sc_subsequent_filters_test \ CppunitTest_sc_subsequent_export_test \ - CppunitTest_sc_bugfix_test \ CppunitTest_sc_html_export_test \ CppunitTest_sc_opencl_test \ CppunitTest_sc_copypaste \ diff --git a/sc/qa/unit/bugfix-test.cxx b/sc/qa/unit/bugfix-test.cxx index f545953..0296975 100644 --- a/sc/qa/unit/bugfix-test.cxx +++ b/sc/qa/unit/bugfix-test.cxx @@ -86,6 +86,7 @@ public: void testTdf43534(); void testTdf91979(); // void testTdf40110(); + void testTdf98657(); CPPUNIT_TEST_SUITE(ScFiltersTest); CPPUNIT_TEST(testTdf64229); @@ -94,6 +95,7 @@ public: CPPUNIT_TEST(testTdf43534); CPPUNIT_TEST(testTdf91979); // CPPUNIT_TEST(testTdf40110); + CPPUNIT_TEST(testTdf98657); CPPUNIT_TEST_SUITE_END(); private: uno::Reference<uno::XInterface> m_xCalcComponent; @@ -230,6 +232,17 @@ void ScFiltersTest::testTdf40110() } */ +void ScFiltersTest::testTdf98657() +{ + ScDocShellRef xDocSh = loadDoc("tdf98657.", FORMAT_ODS); + ScDocument& rDoc = xDocSh->GetDocument(); + + xDocSh->DoHardRecalc(true); + + // this was a NaN before the fix + CPPUNIT_ASSERT_EQUAL(double(285.0), rDoc.GetValue(ScAddress(1, 1, 0))); +} + ScFiltersTest::ScFiltersTest() : ScBootstrapFixture( "/sc/qa/unit/data" ) diff --git a/sc/qa/unit/data/ods/tdf98657.ods b/sc/qa/unit/data/ods/tdf98657.ods new file mode 100644 index 0000000..c65e1fa Binary files /dev/null and b/sc/qa/unit/data/ods/tdf98657.ods differ diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx index 90fea67..7c66db7 100644 --- a/sc/source/core/tool/scmatrix.cxx +++ b/sc/source/core/tool/scmatrix.cxx @@ -3261,7 +3261,14 @@ void fillMatrix( ScMatrix& rMat, size_t nCol, const double* pNums, rtl_uString** continue; } - // Empty cell. No action required. + // it's a NaN, need to flush the non-NaN segment if it exists + + if (pNumHead) + { + // Flush this non-NaN segment to the matrix. + rMat.PutDouble(pNumHead, pNum - pNumHead, nCol, pNumHead - pNums); + pNumHead = nullptr; + } } if (pStrHead) @@ -3287,6 +3294,9 @@ void ScVectorRefMatrix::ensureFullMatrix() size_t nColSize = rArrays.size(); mpFullMatrix.reset(new ScFullMatrix(nColSize, mnRowSize)); + if (mpErrorInterpreter) + mpFullMatrix->SetErrorInterpreter(mpErrorInterpreter); + size_t nRowSize = mnRowSize; size_t nRowEnd = mnRowStart + mnRowSize; size_t nDataRowEnd = mpToken->GetArrayLength(); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
