[libreoffice] Resolves: rhbz#1117853 crash on paste into impress outline

Caolán McNamara caolanm at fedoraproject.org
Fri Jul 18 09:09:04 UTC 2014


commit 85552cf7311cd00f4f1d07882feed56cb6c7ccc2
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jul 18 10:09:12 2014 +0100

    Resolves: rhbz#1117853 crash on paste into impress outline

 ...o-81487-pasting-into-outline-view-crashes.patch |   48 ++++++++++++++++++++
 libreoffice.spec                                   |    1 +
 2 files changed, 49 insertions(+), 0 deletions(-)
---
diff --git a/0001-Resolves-fdo-81487-pasting-into-outline-view-crashes.patch b/0001-Resolves-fdo-81487-pasting-into-outline-view-crashes.patch
new file mode 100644
index 0000000..4cbecd5
--- /dev/null
+++ b/0001-Resolves-fdo-81487-pasting-into-outline-view-crashes.patch
@@ -0,0 +1,48 @@
+From a5793f5e0013b156600fd718d8f77870a9e73032 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Fri, 18 Jul 2014 09:06:44 +0100
+Subject: [PATCH] Resolves: fdo#81487 pasting into outline view crashes impress
+
+CreateTitleTextObject will call indirectly ImpPageChange which
+triggers tools::EventMultiplexerEvent::EID_PAGE_ORDER and so
+in outlview.cxx without ignore page changes level in action
+the outliner is filled in from the slide contents in
+FillOutliner clearing the outliner contents and filling it
+fresh, but..
+
+a) this hack tower is not prepared for all the outliner
+iterators to become invalid
+b) the contents of this title object is empty, because
+it was just created, and we didn't get a chance to fill
+in its text.
+
+This all works for typing vs pasting because the KeyInput
+uses the OutlineViewPageChangesGuard guard which sets the
+ignore pages changes bit.
+
+So, given that OutlineView::UpdateDocument expects
+the iterators of the outliner to be valid during
+the lifetime of the method lock the full method with
+the OutlineViewPageChangesGuard guard
+
+Change-Id: Iecbf37d54f5f0c5a181be5f27832f769a3d2e389
+---
+ sd/source/ui/view/outlview.cxx | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
+index 268a32b..a76bb0b 100644
+--- a/sd/source/ui/view/outlview.cxx
++++ b/sd/source/ui/view/outlview.cxx
+@@ -1535,6 +1535,8 @@ void OutlineView::EndModelChange()
+ /** updates all changes in the outliner model to the draw model */
+ void OutlineView::UpdateDocument()
+ {
++    OutlineViewPageChangesGuard aGuard(this);
++
+     const sal_uInt32 nPageCount = mrDoc.GetSdPageCount(PK_STANDARD);
+     Paragraph* pPara = mrOutliner.GetParagraph( 0 );
+     sal_uInt32 nPage;
+-- 
+1.9.3
+
diff --git a/libreoffice.spec b/libreoffice.spec
index f5a592b..c13db58 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -308,6 +308,7 @@ Patch17: 0001-avoid-problems-detecting-HTML-files-with-.xls-ext.patch
 Patch18: 0001-Resolves-fdo-80911-toggle-original-page-orientation-.patch
 Patch19: 0001-scrolling-very-slow-in-calc.patch
 Patch20: 0001-Related-rhbz-1117853-nStartPara-of-EE_PARA_NOT_FOUND.patch
+Patch21: 0001-Resolves-fdo-81487-pasting-into-outline-view-crashes.patch
 
 %define instdir %{_libdir}
 %define baseinstdir %{instdir}/libreoffice


More information about the scm-commits mailing list