Hi there,
I'd like the attached patch pushed to the 3-6 branch.
Without this patch, doing the following
1. Create a new Calc document.
2. Type some stuff into Cell D5.
3. Move the cursor to Cell C5.
4. Ctrl-+ to launch the Insert Cells dialog. Select Shift cell right and 
hit OK.
5. Ctrl-Z to undo.
Would crash Calc right away.
I'm actually surprised this has not been reported in bugzilla yet. Or 
perhaps it's there but never confirmed? I don't know which is the case. 
 I just happened to have noticed this while testing Calc for something 
else.
Kohei
--
Kohei Yoshida, LibreOffice hacker, Calc
From 7f576562cb94fba2690298bb16c0b85d1de41f21 Mon Sep 17 00:00:00 2001
From: Kohei Yoshida <kohei.yoshida@gmail.com>
Date: Thu, 1 Nov 2012 20:36:25 -0400
Subject: [PATCH] Remove the correct range, or else maItems would end up with
 invalid pointer.
nStopPos is non-inclusive, and STL's erase() method also expects a
non-inclusive end position (like any other STL methods do).  It's wrong
to -1 here which would end up not erasing the last element containing
a pointer to the deleted cell instance.
Change-Id: Ic09ab4a6bb03d0f56bb854a91bf93a99be867116
---
 sc/source/core/data/column.cxx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index eebb17a..79bf31f 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1555,7 +1555,7 @@ void ScColumn::MoveTo(SCROW nStartRow, SCROW nEndRow, ScColumn& rCol)
                     rAddress.SetRow( maItems[i].nRow );
                     pDocument->AreaBroadcast( aHint );
                 }
-                maItems.erase(maItems.begin() + nStartPos, maItems.begin() + nStopPos - 1);
+                maItems.erase(maItems.begin() + nStartPos, maItems.begin() + nStopPos);
             }
             pNoteCell->Delete();
         }
-- 
1.8.0
Context
- [REVIEW 3-6] Fix for Calc crasher · Kohei Yoshida
 
   
 
  Privacy Policy |
  
Impressum (Legal Info) |
  
Copyright information: Unless otherwise specified, all text and images
  on this website are licensed under the
  
Creative Commons Attribution-Share Alike 3.0 License.
  This does not include the source code of LibreOffice, which is
  licensed under the Mozilla Public License (
MPLv2).
  "LibreOffice" and "The Document Foundation" are
  registered trademarks of their corresponding registered owners or are
  in actual use as trademarks in one or more countries. Their respective
  logos and icons are also subject to international copyright laws. Use
  thereof is explained in our 
trademark policy.