Issue 113810 - crash in edit points while deleting curve points
Summary: crash in edit points while deleting curve points
Status: CLOSED FIXED
Alias: None
Product: Draw
Classification: Application
Component: editing (show other issues)
Version: OOO330m3
Hardware: Unknown All
: P2 Trivial (vote)
Target Milestone: OOo 3.3
Assignee: wolframgarten
QA Contact: issues@graphics
URL:
Keywords: oooqa, regression
Depends on:
Blocks: 111112
  Show dependency tree
 
Reported: 2010-08-11 15:50 UTC by Joe Smith
Modified: 2017-05-20 10:22 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Latest Confirmation in: ---
Developer Difficulty: ---


Attachments
patch to fix the task (719 bytes, text/plain)
2010-08-13 12:13 UTC, Armin Le Grand
no flags Details

Note You need to log in before you can comment on or make changes to this issue.
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!