diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-07-27 14:35:37 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-07-27 14:41:21 -0400 |
commit | a3fc7f20089062afa4f778e70ba8be84032a30a7 (patch) | |
tree | 7979f7b570d649df838b5259176f1e577019b8ee /sc/source/core/data/table3.cxx | |
parent | 97f700721e942912101d5acd73433448e57e39e5 (diff) |
fdo#81617: Split formula groups at sort range boundaries.
Otherwise, partially sorting a range may crash, or at best incorrectly
update formula references.
Change-Id: Iefcb86d205d83ccc5b684048bfd9aadabf6e13eb
Diffstat (limited to 'sc/source/core/data/table3.cxx')
-rw-r--r-- | sc/source/core/data/table3.cxx | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index a842d829592d..25e088fcc231 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -751,6 +751,14 @@ void ScTable::SortReorderByRow( ScSortInfoArray::RowsType* pRows = pArray->GetDataRows(); assert(pRows); // In sort-by-row mode we must have data rows already populated. + // Split formula groups at the sort range boundaries (if applicable). + std::vector<SCROW> aRowBounds; + aRowBounds.reserve(2); + aRowBounds.push_back(nRow1); + aRowBounds.push_back(nRow2+1); + for (SCCOL nCol = nCol1; nCol <= nCol2; ++nCol) + SplitFormulaGroups(nCol, aRowBounds); + // Cells in the data rows only reference values in the document. Make // a copy before updating the document. |