From 7a182026fce922a9f69e8da76d46e87e7188a4e9 Mon Sep 17 00:00:00 2001 From: Markus Mohrhard Date: Mon, 17 Sep 2012 14:41:19 +0200 Subject: don't use delete with remove_if, related fdo#54498 Change-Id: I508ceb8dfe13fbfe54b4262d26bd215462c90c40 --- sc/source/core/tool/rangelst.cxx | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx index 2f90f39f6123..49b61620adf0 100644 --- a/sc/source/core/tool/rangelst.cxx +++ b/sc/source/core/tool/rangelst.cxx @@ -705,9 +705,16 @@ void ScRangeList::DeleteArea( SCCOL nCol1, SCROW nRow1, SCTAB nTab1, SCCOL nCol2, SCROW nRow2, SCTAB nTab2 ) { ScRange aRange( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); - iterator itrDel = std::remove_if(maRanges.begin(), maRanges.end(), FindRangeIn(aRange)); - for_each(itrDel, maRanges.end(), ScDeleteObjectByPtr()); - maRanges.erase(itrDel, maRanges.end()); + for(size_t i = 0; i < maRanges.size();) + { + if(FindRangeIn(aRange)(maRanges[i])) + { + ScRange* pRange = Remove(i); + delete pRange; + } + else + ++i; + } std::vector aNewRanges; -- cgit v1.2.1