mdds/0001-Combine-these-two-calls.-There-is-no-reason-why-they.patch | 27 ++ mdds/0001-Fix-it-here-too.patch | 26 ++ mdds/UnpackedTarball_mdds.mk | 2 sc/qa/unit/ucalc.cxx | 122 +++++++--- sc/source/core/data/dociter.cxx | 6 5 files changed, 145 insertions(+), 38 deletions(-)
New commits: commit 1efd0a6a1db0414bc4929865fc6e282cabacab8d Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Tue Jun 25 11:06:43 2013 -0400 The horizontal cell iterator was *still* broken. Let's fix it again. And add a test for it. Change-Id: If76a67e02ac6ad5199d664850bd8591bd3032f32 diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx index b29a89e..462087a4 100644 --- a/sc/qa/unit/ucalc.cxx +++ b/sc/qa/unit/ucalc.cxx @@ -404,6 +404,12 @@ void printRange(ScDocument* pDoc, const ScRange& rRange, const char* pCaption) template<size_t _Size> ScRange insertRangeData(ScDocument* pDoc, const ScAddress& rPos, const char* aData[][_Size], size_t nRowCount) { + ScRange aRange(rPos); + aRange.aEnd.SetCol(rPos.Col()+_Size-1); + aRange.aEnd.SetRow(rPos.Row()+nRowCount-1); + + clearRange(pDoc, aRange); + for (size_t i = 0; i < _Size; ++i) { for (size_t j = 0; j < nRowCount; ++j) @@ -417,9 +423,6 @@ ScRange insertRangeData(ScDocument* pDoc, const ScAddress& rPos, const char* aDa } } - ScRange aRange(rPos); - aRange.aEnd.SetCol(rPos.Col()+_Size-1); - aRange.aEnd.SetRow(rPos.Row()+nRowCount-1); printRange(pDoc, aRange, "Range data content"); return aRange; } @@ -1785,48 +1788,97 @@ void Test::testVolatileFunc() m_pDoc->DeleteTab(0); } -void Test::testHorizontalIterator() -{ - m_pDoc->InsertTab(0, "test"); +namespace { - // Raw data - const char* aData[][2] = { - { "A", "B" }, - { "C", "1" }, - { "D", "2" }, - { "E", "3" } - }; +struct HoriIterCheck +{ + SCCOL nCol; + SCROW nRow; + const char* pVal; +}; +template<size_t _Size> +bool checkHorizontalIterator(ScDocument* pDoc, const char* pData[][_Size], size_t nDataCount, const HoriIterCheck* pChecks, size_t nCheckCount) +{ ScAddress aPos(0,0,0); - insertRangeData(m_pDoc, aPos, aData, SAL_N_ELEMENTS(aData)); - ScHorizontalCellIterator aIter(m_pDoc, 0, 0, 0, 1, SAL_N_ELEMENTS(aData)); - - struct { - SCCOL nCol; - SCROW nRow; - const char* pVal; - } aChecks[] = { - { 0, 0, "A" }, - { 1, 0, "B" }, - { 0, 1, "C" }, - { 1, 1, "1" }, - { 0, 2, "D" }, - { 1, 2, "2" }, - { 0, 3, "E" }, - { 1, 3, "3" }, - }; + insertRangeData(pDoc, aPos, pData, nDataCount); + ScHorizontalCellIterator aIter(pDoc, 0, 0, 0, 1, nDataCount-1); SCCOL nCol; SCROW nRow; - size_t i = 0, n = SAL_N_ELEMENTS(aChecks); + size_t i = 0; for (ScRefCellValue* pCell = aIter.GetNext(nCol, nRow); pCell; pCell = aIter.GetNext(nCol, nRow), ++i) { - if (i >= n) + if (i >= nCheckCount) CPPUNIT_FAIL("Iterator claims there is more data than there should be."); - CPPUNIT_ASSERT_EQUAL(aChecks[i].nCol, nCol); - CPPUNIT_ASSERT_EQUAL(aChecks[i].nRow, nRow); - CPPUNIT_ASSERT_EQUAL(OUString::createFromAscii(aChecks[i].pVal), pCell->getString()); + if (pChecks[i].nCol != nCol) + return false; + + if (pChecks[i].nRow != nRow) + return false; + + if (OUString::createFromAscii(pChecks[i].pVal) != pCell->getString()) + return false; + } + + return true; +} + +} + +void Test::testHorizontalIterator() +{ + m_pDoc->InsertTab(0, "test"); + + { + // Raw data + const char* aData[][2] = { + { "A", "B" }, + { "C", "1" }, + { "D", "2" }, + { "E", "3" } + }; + + HoriIterCheck aChecks[] = { + { 0, 0, "A" }, + { 1, 0, "B" }, + { 0, 1, "C" }, + { 1, 1, "1" }, + { 0, 2, "D" }, + { 1, 2, "2" }, + { 0, 3, "E" }, + { 1, 3, "3" }, + }; + + bool bRes = checkHorizontalIterator( + m_pDoc, aData, SAL_N_ELEMENTS(aData), aChecks, SAL_N_ELEMENTS(aChecks)); + + if (!bRes) + CPPUNIT_FAIL("Failed on test 1."); + } + + { + // Raw data + const char* aData[][2] = { + { "A", "B" }, + { "C", 0 }, + { "D", "E" }, + }; + + HoriIterCheck aChecks[] = { + { 0, 0, "A" }, + { 1, 0, "B" }, + { 0, 1, "C" }, + { 0, 2, "D" }, + { 1, 2, "E" }, + }; + + bool bRes = checkHorizontalIterator( + m_pDoc, aData, SAL_N_ELEMENTS(aData), aChecks, SAL_N_ELEMENTS(aChecks)); + + if (!bRes) + CPPUNIT_FAIL("Failed on test 2."); } m_pDoc->DeleteTab(0); diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx index b5b0e4f..032362b 100644 --- a/sc/source/core/data/dociter.cxx +++ b/sc/source/core/data/dociter.cxx @@ -1785,9 +1785,6 @@ void ScHorizontalCellIterator::Advance() if (r.maPos == r.maEnd) continue; - if (r.maPos->type == sc::element_type_empty) - continue; - size_t nRow = static_cast<size_t>(mnRow); if (nRow < r.maPos->position) continue; @@ -1796,6 +1793,9 @@ void ScHorizontalCellIterator::Advance() if (!advanceBlock(nRow, r.maPos, r.maEnd)) continue; + if (r.maPos->type == sc::element_type_empty) + continue; + // Found in the current row. mnCol = i; bMore = true; commit e05af970b376342ae199e6d7d77abe67cfbd2eaf Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Tue Jun 25 09:43:54 2013 -0400 Another place where the same fix needs to be applied. Change-Id: I2d54fa4c39c28b815a051977715e1db672156957 diff --git a/mdds/0001-Fix-it-here-too.patch b/mdds/0001-Fix-it-here-too.patch new file mode 100644 index 0000000..9884ff0 --- /dev/null +++ b/mdds/0001-Fix-it-here-too.patch @@ -0,0 +1,26 @@ +From e9fdebe0cad9277cfed994cae7fe9d08efbb4ba8 Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida <kohei.yosh...@gmail.com> +Date: Tue, 25 Jun 2013 09:42:19 -0400 +Subject: [PATCH] Fix it here too. + +--- + include/mdds/multi_type_vector_def.inl | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/include/mdds/multi_type_vector_def.inl b/include/mdds/multi_type_vector_def.inl +index 685899b..cea8ae0 100644 +--- a/include/mdds/multi_type_vector_def.inl ++++ b/c/d/include/mdds/multi_type_vector_def.inl +@@ -1829,8 +1829,7 @@ void multi_type_vector<_CellBlockFunc>::swap_single_blocks( + } + else + { +- m_blocks.insert(m_blocks.begin()+block_index+1, NULL); +- m_blocks[block_index+1] = new block(len); ++ m_blocks.insert(m_blocks.begin()+block_index+1, new block(len)); + block* blk = m_blocks[block_index+1]; + blk->mp_data = dst_data.release(); + } +-- +1.8.0 + diff --git a/mdds/UnpackedTarball_mdds.mk b/mdds/UnpackedTarball_mdds.mk index bbad2dd..9d85d74 100644 --- a/mdds/UnpackedTarball_mdds.mk +++ b/mdds/UnpackedTarball_mdds.mk @@ -17,6 +17,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,mdds,\ mdds/mdds_0.6.0.patch \ mdds/0001-Workaround-for-an-old-gcc-bug.patch \ mdds/0001-Combine-these-two-calls.-There-is-no-reason-why-they.patch \ + mdds/0001-Fix-it-here-too.patch \ )) # vim: set noet sw=4 ts=4: commit 67b8928e5832e6d32878f2f1163adb8759a97869 Author: Kohei Yoshida <kohei.yosh...@gmail.com> Date: Tue Jun 25 08:19:37 2013 -0400 Try to help the Windows tinderbox. Change-Id: Ia3c6df80ff26ea00e91dd97841c4867bf0a55705 diff --git a/mdds/0001-Combine-these-two-calls.-There-is-no-reason-why-they.patch b/mdds/0001-Combine-these-two-calls.-There-is-no-reason-why-they.patch new file mode 100644 index 0000000..783210d --- /dev/null +++ b/mdds/0001-Combine-these-two-calls.-There-is-no-reason-why-they.patch @@ -0,0 +1,27 @@ +From a2a1c432f65c0612bb6f1c23a50bd41d2cf0cbdd Mon Sep 17 00:00:00 2001 +From: Kohei Yoshida <kohei.yosh...@gmail.com> +Date: Tue, 25 Jun 2013 08:08:09 -0400 +Subject: [PATCH] Combine these two calls. There is no reason why they have to + separate. + +--- + include/mdds/multi_type_vector_def.inl | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/include/mdds/multi_type_vector_def.inl b/include/mdds/multi_type_vector_def.inl +index 36dde5e..685899b 100644 +--- a/include/mdds/multi_type_vector_def.inl ++++ b/c/d/include/mdds/multi_type_vector_def.inl +@@ -1801,8 +1801,7 @@ void multi_type_vector<_CellBlockFunc>::swap_single_blocks( + else + { + // Insert a new block to store the new elements. +- m_blocks.insert(m_blocks.begin()+block_index, NULL); +- m_blocks[block_index] = new block(len); ++ m_blocks.insert(m_blocks.begin()+block_index, new block(len)); + block* blk = m_blocks[block_index]; + blk->mp_data = dst_data.release(); + } +-- +1.8.0 + diff --git a/mdds/UnpackedTarball_mdds.mk b/mdds/UnpackedTarball_mdds.mk index 69fbf18..bbad2dd 100644 --- a/mdds/UnpackedTarball_mdds.mk +++ b/mdds/UnpackedTarball_mdds.mk @@ -16,6 +16,7 @@ $(eval $(call gb_UnpackedTarball_set_patchlevel,mdds,3)) $(eval $(call gb_UnpackedTarball_add_patches,mdds,\ mdds/mdds_0.6.0.patch \ mdds/0001-Workaround-for-an-old-gcc-bug.patch \ + mdds/0001-Combine-these-two-calls.-There-is-no-reason-why-they.patch \ )) # vim: set noet sw=4 ts=4: _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits