Issue 101006

Summary: Crash when applying layout for three pages, Undo three times and then applying layout again
Product: Impress Reporter: amy2008 <amy2008>
Component: codeAssignee: wolframgarten
Status: CLOSED FIXED QA Contact: issues@graphics <issues>
Severity: Trivial    
Priority: P2 CC: issues, peter.junge, zhuangyuelin
Version: OOO300m9   
Target Milestone: OOo 3.3   
Hardware: All   
OS: All   
Issue Type: DEFECT Latest Confirmation in: ---
Developer Difficulty: ---
Issue Depends on:    
Issue Blocks: 84292    
Attachments:
Description Flags
Fix for the crash none

Description amy2008 2009-04-10 07:15:02 UTC
Can reproduce it in OOo300m9 and OOo310m9 on WinXP and Fedora9.

How to reproduce it
1 Create a Impress file
2 On the slide pane, right-click to create two "New Slide" (3 slide pages in
  number), choose the first slide page
3 Select Master Pages on the task pane, then applying one layout for the first
  page by "Apply to the selected pages", applying another layout for the
  second page by "Apply to the selected pages", applying the layout which used
  by the first page for the third page by "Apply to the selected pages". 
4 Apply any layout to all slides for these 3 pages, then Undo until 3 pages are
  no layouts, namely back to the status of step2
5 Apply any layout to these 3 pages by click the layout

Result
OOo crashes

Expectation
OOo works well

Regards
Li Meiying
Comment 1 amy2008 2009-04-10 07:17:51 UTC
edit summary
Comment 2 dtardon 2009-04-14 06:34:16 UTC
It works for me (OOO310_m9 on Fedora Rawhide).
Comment 3 wolframgarten 2009-04-14 08:50:49 UTC
Reproducible. Reassigned.
Comment 4 groucho266 2009-09-25 12:59:55 UTC
Setting target to OOo 3.3.
Comment 5 groucho266 2010-07-14 08:29:24 UTC
@wg: I can not reproduce this crash anymore, can you?
Comment 6 amy2008 2010-07-14 10:24:50 UTC
Hi af,
Now I can't reproduce it in OOo3.2.1(OOo320m17) on WinXP too.
Would you like setting status for this issue?
Regards
Li Meiying
Comment 7 wolframgarten 2010-07-14 11:26:35 UTC
Still reproducible for me in DEV300_m84 but not in OOO330_m0.
Comment 8 wolframgarten 2010-08-17 12:47:17 UTC
Still reproducible in OOO330_m4 and EV300_m86. Reassigned.
Comment 9 groucho266 2010-08-18 16:29:30 UTC
Created attachment 71169 [details]
Fix for the crash
Comment 10 groucho266 2010-08-18 16:39:12 UTC
I can now reproduce the crash too.  It is important to really assign one layout
to two slides in step 3.

When one layout is assigned to two different slides, the associated master page
is cloned twice in the target document but both copies have the same name as the
original.  Undo actions identify master pages via their name.  Executing the
undo actions brings the model out of sync and leaves slides without master pages.

A possible fix can be found in the diff above:
DocumentHelper::ProvideMasterPage() does not clone the layout master page
unconditionally but first checks if one with the same name does already exist in
the target document.  It it does then this master page is reused.

Have to check the side effects of this fix, though.
Comment 11 groucho266 2010-08-26 15:42:07 UTC
Fixed as outlined above.
Comment 12 groucho266 2010-08-30 13:20:19 UTC
@wg: Please verify.
Comment 13 wolframgarten 2010-09-02 15:33:21 UTC
Verified in CWS.