diff options
author | Eike Rathke <erack@redhat.com> | 2015-05-04 20:45:45 +0200 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2015-05-04 20:56:40 +0200 |
commit | 46fa99f61aff88f1697959a9d3c41a5c3c3c05e9 (patch) | |
tree | 8058b4a7fa6548b1e5ced08efe37d38f8a7b29e8 /sc/source/core | |
parent | d7336b91f0539751c1e955ecbbf3b38991c87387 (diff) |
Resolves tdf#90757 ensure start row / end row order makes sense
... in case the header is the only row.
Change-Id: I5e6046007a8d668f9834e108aaf8af0072629fc8
Diffstat (limited to 'sc/source/core')
-rw-r--r-- | sc/source/core/data/table3.cxx | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index 931fc6139b0a..49ecc0f3b482 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -1704,11 +1704,10 @@ void ScTable::Sort( SCROW nLastRow = 0; for (SCCOL nCol = rSortParam.nCol1; nCol <= rSortParam.nCol2; nCol++) nLastRow = std::max(nLastRow, aCol[nCol].GetLastDataPos()); - rSortParam.nRow2 = nLastRow = std::min(nLastRow, rSortParam.nRow2); - SCROW nRow1 = (rSortParam.bHasHeader ? - rSortParam.nRow1 + 1 : rSortParam.nRow1); + rSortParam.nRow2 = nLastRow = std::max( std::min(nLastRow, rSortParam.nRow2), rSortParam.nRow1); + SCROW nRow1 = (rSortParam.bHasHeader ? rSortParam.nRow1 + 1 : rSortParam.nRow1); aSortParam = rSortParam; // must be assigned before calling IsSorted() - if (!IsSorted(nRow1, nLastRow)) + if (nRow1 < nLastRow && !IsSorted(nRow1, nLastRow)) { if(pProgress) pProgress->SetState( 0, nLastRow-nRow1 ); @@ -1737,7 +1736,7 @@ void ScTable::Sort( SCCOL nCol1 = (rSortParam.bHasHeader ? rSortParam.nCol1 + 1 : rSortParam.nCol1); aSortParam = rSortParam; // must be assigned before calling IsSorted() - if (!IsSorted(nCol1, nLastCol)) + if (nCol1 < nLastCol && !IsSorted(nCol1, nLastCol)) { if(pProgress) pProgress->SetState( 0, nLastCol-nCol1 ); |