Apache OpenOffice (AOO) Bugzilla – Issue 113810
crash in edit points while deleting curve points
Last modified: 2017-05-20 10:22:16 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.
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
Reproducible. Reassigned.
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...
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...
AW: Works as expected, adding patch...
Created attachment 71093 [details] patch to fix the task
committed in CWS ooo33gsl05
please verify in CWS ooo33gsl05
Verified in CWS.
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!