[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sc/qa sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Tue Nov 26 17:35:27 PST 2013


 sc/qa/unit/ucalc_formula.cxx    |   19 +++++++++++++++++++
 sc/source/core/data/column2.cxx |   10 +++++-----
 2 files changed, 24 insertions(+), 5 deletions(-)

New commits:
commit 507d348454f6fd2d6475d2878bbc56efd9d73ca1
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Tue Nov 26 20:34:45 2013 -0500

    Fix additional bugs in the vector array fetching code.
    
    And a test case to catch it.
    
    Change-Id: I233269822b383afa9783bdc7318eddee31d1eaa3

diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx
index ff89dbe..a51308c 100644
--- a/sc/qa/unit/ucalc_formula.cxx
+++ b/sc/qa/unit/ucalc_formula.cxx
@@ -451,6 +451,25 @@ void Test::testFetchVectorRefArray()
     CPPUNIT_ASSERT_MESSAGE("Unexpected string cell.", equals(aArray, 2, "baz"));
     CPPUNIT_ASSERT_MESSAGE("Unexpected string cell.", equals(aArray, 3, "quack"));
 
+    // Column H starts with formula cells.
+    for (SCROW i = 0; i < 10; ++i)
+        m_pDoc->SetString(ScAddress(7,i,0), "=ROW()");
+
+    m_pDoc->CalcAll();
+    aArray = m_pDoc->FetchVectorRefArray(ScAddress(7,3,0), 3); // H4:H6
+    CPPUNIT_ASSERT_MESSAGE("Failed to fetch vector ref array.", aArray.isValid());
+    CPPUNIT_ASSERT_MESSAGE("Array should have a numeric array.", aArray.mpNumericArray);
+    CPPUNIT_ASSERT_MESSAGE("Array should NOT have a string array.", !aArray.mpStringArray);
+    CPPUNIT_ASSERT_MESSAGE("Unexpected string cell.", equals(aArray, 0, 4.0));
+    CPPUNIT_ASSERT_MESSAGE("Unexpected string cell.", equals(aArray, 1, 5.0));
+    CPPUNIT_ASSERT_MESSAGE("Unexpected string cell.", equals(aArray, 2, 6.0));
+
+    aArray = m_pDoc->FetchVectorRefArray(ScAddress(7,4,0), 10); // H5:H15
+    CPPUNIT_ASSERT_MESSAGE("Failed to fetch vector ref array.", aArray.isValid());
+    CPPUNIT_ASSERT_MESSAGE("Array should have a numeric array.", aArray.mpNumericArray);
+    CPPUNIT_ASSERT_MESSAGE("Array should NOT have a string array.", !aArray.mpStringArray);
+    CPPUNIT_ASSERT_MESSAGE("Unexpected string cell.", equals(aArray, 0, 5.0));
+
     m_pDoc->DeleteTab(0);
 }
 
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index 65d6c88..24cd615 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -2752,9 +2752,9 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2
                 const double* pNum = NULL;
                 rtl_uString** pStr = NULL;
                 if (pColArray->mpNumArray)
-                    pNum = &(*pColArray->mpNumArray)[0];
+                    pNum = &(*pColArray->mpNumArray)[nRow1];
                 if (pColArray->mpStrArray)
-                    pStr = &(*pColArray->mpStrArray)[0];
+                    pStr = &(*pColArray->mpStrArray)[nRow1];
 
                 return formula::VectorRefArray(pNum, pStr);
             }
@@ -2772,9 +2772,9 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2
             const double* pNum = NULL;
             rtl_uString** pStr = NULL;
             if (pColArray->mpNumArray)
-                pNum = &(*pColArray->mpNumArray)[0];
+                pNum = &(*pColArray->mpNumArray)[nRow1];
             if (pColArray->mpStrArray)
-                pStr = &(*pColArray->mpStrArray)[0];
+                pStr = &(*pColArray->mpStrArray)[nRow1];
 
             return formula::VectorRefArray(pNum, pStr);
         }
@@ -2790,7 +2790,7 @@ formula::VectorRefArray ScColumn::FetchVectorRefArray( SCROW nRow1, SCROW nRow2
                 return formula::VectorRefArray();
 
             if (static_cast<size_t>(nRow2) < itBlk->size)
-                return formula::VectorRefArray(&(*pColArray->mpNumArray)[0]);
+                return formula::VectorRefArray(&(*pColArray->mpNumArray)[nRow1]);
 
             // Fill the remaining array with values from the following blocks.
             size_t nPos = itBlk->size;


More information about the Libreoffice-commits mailing list