summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2013-12-19 16:07:53 +0100
committerEike Rathke <erack@redhat.com>2013-12-19 16:12:34 +0100
commitefb0412eda9eb33e45b27d9d7d6cc94e4211a82c (patch)
tree8bb37757314dcb7544e0d784fe03b3a1f77a6f6e
parent37b0ec6dcbb764a07e5e080e7ecad51d94d70eef (diff)
fixed crash when invoking sort on an empty sheet's entire column, fdo#72874
Change-Id: Ifc4a08069a42ca18a056c509575a4080094aa07e
-rw-r--r--sc/source/ui/view/cellsh2.cxx11
1 files changed, 8 insertions, 3 deletions
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index c408e2049a6b..9cba2015d26f 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -122,10 +122,15 @@ static sal_Bool lcl_GetSortParam( const ScViewData* pData, ScSortParam& rSortPar
if( rSortParam.nRow1 != rSortParam.nRow2 )
eFillDir = DIR_TOP;
- SCSIZE nCount = pDoc->GetEmptyLinesInBlock( rSortParam.nCol1, rSortParam.nRow1, nTab, rSortParam.nCol2, rSortParam.nRow2, nTab, eFillDir );
-
if( rSortParam.nRow2 == MAXROW )
- aExternalRange = ScRange( rSortParam.nCol1,sal::static_int_cast<SCROW>( nCount ), nTab );
+ {
+ // Assume that user selected entire column(s), but cater for the
+ // possibility that the start row is not the first row.
+ SCSIZE nCount = pDoc->GetEmptyLinesInBlock( rSortParam.nCol1, rSortParam.nRow1, nTab,
+ rSortParam.nCol2, rSortParam.nRow2, nTab, eFillDir );
+ aExternalRange = ScRange( rSortParam.nCol1,
+ ::std::min( rSortParam.nRow1 + sal::static_int_cast<SCROW>( nCount ), MAXROW), nTab );
+ }
else
aExternalRange = ScRange( pData->GetCurX(), pData->GetCurY(), nTab );