[Libreoffice-commits] .: 2 commits - sc/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Sep 17 05:57:12 PDT 2012


 sc/source/core/tool/rangelst.cxx |   21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

New commits:
commit 7a182026fce922a9f69e8da76d46e87e7188a4e9
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Sep 17 14:41:19 2012 +0200

    don't use delete with remove_if, related fdo#54498
    
    Change-Id: I508ceb8dfe13fbfe54b4262d26bd215462c90c40

diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx
index 2f90f39..49b6162 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<ScRange>(aRange));
-    for_each(itrDel, maRanges.end(), ScDeleteObjectByPtr<ScRange>());
-    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<ScRange> aNewRanges;
 
commit e6bca122176cdb2b6e822fc933f159dc3e3c8d46
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Mon Sep 17 14:37:30 2012 +0200

    don't delete ranges in ScRangeList::UpdateReference, fdo#54498
    
    Change-Id: Id6a1f9f514c8221e5ca79e1eaafe69916fc1d1bd

diff --git a/sc/source/core/tool/rangelst.cxx b/sc/source/core/tool/rangelst.cxx
index de87e6c..2f90f39 100644
--- a/sc/source/core/tool/rangelst.cxx
+++ b/sc/source/core/tool/rangelst.cxx
@@ -417,14 +417,6 @@ bool ScRangeList::UpdateReference(
     SCTAB nTab2;
     rWhere.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 );
 
-    // delete all entries that are fully deleted
-    if( eUpdateRefMode == URM_INSDEL && (nDx < 0 || nDy < 0) )
-    {
-        vector<ScRange*>::iterator itr = std::remove_if(maRanges.begin(), maRanges.end(), FindDeletedRange(nDx, nDy));
-        for_each(itr, maRanges.end(), ScDeleteObjectByPtr<ScRange>());
-        maRanges.erase(itr, maRanges.end());
-    }
-
     vector<ScRange*>::iterator itr = maRanges.begin(), itrEnd = maRanges.end();
     for (; itr != itrEnd; ++itr)
     {


More information about the Libreoffice-commits mailing list