summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/tool/formulagroup.cxx28
1 files changed, 14 insertions, 14 deletions
diff --git a/sc/source/core/tool/formulagroup.cxx b/sc/source/core/tool/formulagroup.cxx
index 0b37b97600cf..5dff3d9476db 100644
--- a/sc/source/core/tool/formulagroup.cxx
+++ b/sc/source/core/tool/formulagroup.cxx
@@ -83,6 +83,18 @@ void fillMatrix( ScMatrix& rMat, size_t nCol, const double* pNums, size_t nLen )
}
}
+void flushSegment(
+ ScMatrix& rMat, size_t nCol, rtl_uString** pHead, rtl_uString** pCur, rtl_uString** pTop )
+{
+ size_t nOffset = pHead - pTop;
+ std::vector<OUString> aStrs;
+ aStrs.reserve(pCur - pHead);
+ for (; pHead != pCur; ++pHead)
+ aStrs.push_back(OUString(*pHead));
+
+ rMat.PutString(&aStrs[0], aStrs.size(), nCol, nOffset);
+}
+
void fillMatrix( ScMatrix& rMat, size_t nCol, rtl_uString** pStrs, size_t nLen )
{
rtl_uString** p = pStrs;
@@ -102,13 +114,7 @@ void fillMatrix( ScMatrix& rMat, size_t nCol, rtl_uString** pStrs, size_t nLen )
if (pHead)
{
// Flush this non-empty segment to the matrix.
- size_t nOffset = pHead - pStrs;
- std::vector<OUString> aStrs;
- aStrs.reserve(p - pHead);
- for (; pHead != p; ++pHead)
- aStrs.push_back(OUString(*pHead));
-
- rMat.PutString(&aStrs[0], aStrs.size(), nCol, nOffset);
+ flushSegment(rMat, nCol, pHead, p, pStrs);
pHead = NULL;
}
}
@@ -116,13 +122,7 @@ void fillMatrix( ScMatrix& rMat, size_t nCol, rtl_uString** pStrs, size_t nLen )
if (pHead)
{
// Flush last non-empty segment to the matrix.
- size_t nOffset = pHead - pStrs;
- std::vector<OUString> aStrs;
- aStrs.reserve(p - pHead);
- for (; pHead != p; ++pHead)
- aStrs.push_back(OUString(*pHead));
-
- rMat.PutString(&aStrs[0], aStrs.size(), nCol, nOffset);
+ flushSegment(rMat, nCol, pHead, p, pStrs);
}
}