Issue 113810

Summary: crash in edit points while deleting curve points
Product: Draw Reporter: Joe Smith <jes>
Component: editingAssignee: wolframgarten
Status: CLOSED FIXED QA Contact: issues@graphics <issues>
Severity: Trivial    
Priority: P2 CC: issues, rainerbielefeld_ooo_qa
Version: OOO330m3Keywords: oooqa, regression
Target Milestone: OOo 3.3   
Hardware: Unknown   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---
Issue Depends on:    
Issue Blocks: 111112    
Attachments:
Description Flags
patch to fix the task none

Description Joe Smith 2010-08-11 15:50:01 UTC
Testing "OOo-dev 3.3  330m3(Build:9519)" on Fedora Linux 13

Steps to reproduce:

1) File > New > Drawing

2) Create a Bezier curve: use the "Freeform line" tool to make a line across
about 1/2 the page width.

3) Edit > Points

4) Delete points from the line by selecting a point with the mouse, then
pressing the "Delete" key.

5) Repeat step 4 until OOo crashes. Most times I get a crash after 2-5 points,
but sometimes more. Starting over at step 2 may be needed, or even re-starting
OOo, but I always get a crash eventually.

Same steps also crash Impress.
Comment 1 Rainer Bielefeld 2010-08-12 05:58:39 UTC
Reproducible with "Ooo-Dev 3.3.0 multilingual version English UI WIN XP:
[OOo330m1 (Build 9514)]"!

Unfortunately no crash report will be created

Should be fixed for 3.3
Comment 2 wolframgarten 2010-08-12 08:31:16 UTC
Reproducible. Reassigned.
Comment 3 Armin Le Grand 2010-08-13 11:35:43 UTC
AW: The crash happens in SdrMarkView::MouseMove where the loop over the current
handles stumbles over a zero-pointer one in the list. I will have to check if
the list is corrected when a point gets deleted...
Comment 4 Armin Le Grand 2010-08-13 12:08:16 UTC
AW: In SdrMarkView::MouseMove the order of commands causes the crash. The crash
happens more reliable when You move the mouse during pressing the delete key
which already points to a timing problem.

The call to PickHandle() will re-create the handles (that this is necessary is
internally buffered). Unfortunately, the number of handles to iterate over is
already remembered before this using aHdl.GetHdlCount().

This does not happen without moving the mouse since a callback timer will
refresh the handle list before the next MouseMove.

To fix this it is necessary to get the number of handles after the call to
PickHandle(). Done this, checking...
Comment 5 Armin Le Grand 2010-08-13 12:12:28 UTC
AW: Works as expected, adding patch...
Comment 6 Armin Le Grand 2010-08-13 12:13:26 UTC
Created attachment 71093 [details]
patch to fix the task
Comment 7 philipp.lohmann 2010-08-13 13:00:41 UTC
committed in CWS ooo33gsl05
Comment 8 philipp.lohmann 2010-08-13 13:48:21 UTC
please verify in CWS ooo33gsl05
Comment 9 wolframgarten 2010-08-16 10:17:15 UTC
Verified in CWS.
Comment 10 Joe Smith 2010-08-23 16:54:14 UTC
Testing "OOo-dev 3.3  330m5(Build:9521)" on Fedora Linux 13

Looks good: no more crash while deleting points, even with deliberate mouse
movement.

Thanks!