Kaydet (Commit) 5cf5975c authored tarafından Eike Rathke's avatar Eike Rathke

limit SelectionFillDOOM to 24117248 cells, tdf#60021 tdf#60056 related

Change-Id: Idabf5e51b7f423d7d58094ad1caef166728c3bed
üst 1203bf57
...@@ -864,11 +864,16 @@ bool ScViewData::SelectionForbidsPaste() ...@@ -864,11 +864,16 @@ bool ScViewData::SelectionForbidsPaste()
// static // static
bool ScViewData::SelectionFillDOOM( const ScRange& rRange ) bool ScViewData::SelectionFillDOOM( const ScRange& rRange )
{ {
/* TODO: it is still possible to select one row less than the entire sheet // Assume that more than 23 full columns (23M cells) will not be
* and fool around. We could narrow this down to some "sane" value, just // successful.. Even with only 10 bytes per cell that would already be
* what would be sane? At least this helps against the Ctrl+A cases. */ // 230MB, formula cells would be 100 bytes and more per cell.
return rRange.aStart.Col() == 0 && rRange.aEnd.Col() == MAXCOL && // rows * columns > 23m => rows > 23m / columns
rRange.aStart.Row() == 0 && rRange.aEnd.Row() == MAXROW; // to not overflow in case number of available columns or rows would be
// arbitrarily increased.
// We could refine this and take some actual cell size into account,
// evaluate available memory and what not, but..
const sal_Int32 kMax = 23 * 1024 * 1024; // current MAXROWCOUNT is 1024*1024=1048576
return (rRange.aEnd.Row() - rRange.aStart.Row() + 1) > (kMax / (rRange.aEnd.Col() - rRange.aStart.Col() + 1));
} }
void ScViewData::SetFillMode( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow ) void ScViewData::SetFillMode( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment