[Libreoffice-commits] core.git: sc/inc sc/source
Noel Grandin
noel.grandin at collabora.co.uk
Tue Mar 27 19:22:53 UTC 2018
sc/inc/column.hxx | 2 +-
sc/source/core/data/column2.cxx | 3 ++-
sc/source/core/data/column3.cxx | 6 +++---
3 files changed, 6 insertions(+), 5 deletions(-)
New commits:
commit f4f1654c07ec58bc36d824e9434ab851b7900e9f
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date: Tue Mar 27 16:05:38 2018 +0200
tdf#106667 Hang when trying to open a dialog and the whole sheet is selected
regression from
commit 8d54796bf152499ecbe61788be64c9035f725dfa (patch)
enhance pass-by-ref plugin to detect large arguments
which converted this peice of code into an O(n^2) loop
Change-Id: I0473a084518c0d10411615e1b3901b9b90144bc9
Reviewed-on: https://gerrit.libreoffice.org/51956
Reviewed-by: Eike Rathke <erack at redhat.com>
Tested-by: Jenkins <ci at libreoffice.org>
diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index 4a93f21ed381..07bcdc15f855 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -713,7 +713,7 @@ private:
void AttachNewFormulaCells( const sc::CellStoreType::position_type& aPos, size_t nLength );
void BroadcastNewCell( SCROW nRow );
- bool UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, const sc::CellStoreType::iterator& itr );
+ bool UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, sc::CellStoreType::iterator& itr );
const ScFormulaCell* FetchFormulaCell( SCROW nRow ) const;
diff --git a/sc/source/core/data/column2.cxx b/sc/source/core/data/column2.cxx
index f1e3628e9687..415c1203c821 100644
--- a/sc/source/core/data/column2.cxx
+++ b/sc/source/core/data/column2.cxx
@@ -1990,7 +1990,7 @@ SvtScriptType ScColumn::GetScriptType( SCROW nRow ) const
}
SvtScriptType ScColumn::GetRangeScriptType(
- sc::CellTextAttrStoreType::iterator& itPos, SCROW nRow1, SCROW nRow2, const sc::CellStoreType::iterator& itrCells )
+ sc::CellTextAttrStoreType::iterator& itPos, SCROW nRow1, SCROW nRow2, const sc::CellStoreType::iterator& itrCells_ )
{
if (!ValidRow(nRow1) || !ValidRow(nRow2) || nRow1 > nRow2)
return SvtScriptType::NONE;
@@ -2000,6 +2000,7 @@ SvtScriptType ScColumn::GetRangeScriptType(
maCellTextAttrs.position(itPos, nRow1);
itPos = aRet.first; // Track the position of cell text attribute array.
+ sc::CellStoreType::iterator itrCells = itrCells_;
SvtScriptType nScriptType = SvtScriptType::NONE;
bool bUpdated = false;
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index b3a01a4737f3..2907532f961e 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -502,7 +502,7 @@ void ScColumn::BroadcastNewCell( SCROW nRow )
Broadcast(nRow);
}
-bool ScColumn::UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, const sc::CellStoreType::iterator& itr )
+bool ScColumn::UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, sc::CellStoreType::iterator& itr )
{
if (rAttr.mnScriptType != SvtScriptType::UNKNOWN)
// Already updated. Nothing to do.
@@ -515,9 +515,9 @@ bool ScColumn::UpdateScriptType( sc::CellTextAttr& rAttr, SCROW nRow, const sc::
return false;
sc::CellStoreType::position_type pos = maCells.position(itr, nRow);
- sc::CellStoreType::iterator itr2 = pos.first;
+ itr = pos.first;
size_t nOffset = pos.second;
- ScRefCellValue aCell = GetCellValue( itr2, nOffset );
+ ScRefCellValue aCell = GetCellValue( itr, nOffset );
ScAddress aPos(nCol, nRow, nTab);
ScDocument* pDocument = GetDoc();
More information about the Libreoffice-commits
mailing list