[libreoffice] Resolves: rhbz#907933 crash on removing second last para

Caolán McNamara caolanm at fedoraproject.org
Tue Feb 26 20:40:53 UTC 2013


commit 324ce9934507158e0045e0346e038b351a510bfc
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Feb 26 20:40:50 2013 +0000

    Resolves: rhbz#907933 crash on removing second last para

 ...bz-907933-crash-on-removing-second-last-p.patch |   66 ++++++++++++++++++++
 libreoffice.spec                                   |   11 +--
 2 files changed, 70 insertions(+), 7 deletions(-)
---
diff --git a/0001-Resolves-rhbz-907933-crash-on-removing-second-last-p.patch b/0001-Resolves-rhbz-907933-crash-on-removing-second-last-p.patch
new file mode 100644
index 0000000..c1699d9
--- /dev/null
+++ b/0001-Resolves-rhbz-907933-crash-on-removing-second-last-p.patch
@@ -0,0 +1,66 @@
+From 15d8b51bf82610c663f80fe552a1c0315e137ad3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Tue, 5 Feb 2013 17:33:49 +0000
+Subject: [PATCH] Resolves: rhbz#907933 crash on removing second last para in
+ cell...
+
+if (basically) the last para is on next page
+
+Change-Id: Iaff610ea94a829e73bfb8c694a27e0e9b4f6e295
+Reviewed-on: https://gerrit.libreoffice.org/2012
+Tested-by: Michael Stahl <mstahl at redhat.com>
+Reviewed-by: Michael Stahl <mstahl at redhat.com>
+---
+ sw/source/core/inc/tabfrm.hxx    |  2 ++
+ sw/source/core/layout/tabfrm.cxx | 20 ++++++++++++++++++++
+ 2 files changed, 22 insertions(+)
+
+diff --git a/sw/source/core/inc/tabfrm.hxx b/sw/source/core/inc/tabfrm.hxx
+index 464fc9c..1041385 100644
+--- a/sw/source/core/inc/tabfrm.hxx
++++ b/sw/source/core/inc/tabfrm.hxx
+@@ -151,6 +151,8 @@ public:
+     //
+     sal_Bool HasFollowFlowLine() const { return bHasFollowFlowLine; }
+     void SetFollowFlowLine( sal_Bool bNew ) { bHasFollowFlowLine = bNew; }
++    //return the SwTabFrm (if any) that this SwTabFrm is a follow flow line for
++    SwTabFrm* GetFollowFlowLineFor();
+ 
+     sal_Bool IsRebuildLastLine() const { return bIsRebuildLastLine; }
+     void SetRebuildLastLine( sal_Bool bNew ) { bIsRebuildLastLine = bNew; }
+diff --git a/sw/source/core/layout/tabfrm.cxx b/sw/source/core/layout/tabfrm.cxx
+index 27ad754..fb23128 100644
+--- a/sw/source/core/layout/tabfrm.cxx
++++ b/sw/source/core/layout/tabfrm.cxx
+@@ -132,8 +132,28 @@ extern const SwTable   *pRowCacheLastTable;
+ extern const SwTabFrm  *pRowCacheLastTabFrm;
+ extern const SwFrm     *pRowCacheLastCellFrm;
+ 
++//return the SwTabFrm (if any) that this SwTabFrm is a follow flow line for
++SwTabFrm* SwTabFrm::GetFollowFlowLineFor()
++{
++    SwFlowFrm *pPrec = GetPrecede();
++    if (pPrec && pPrec->GetFrm()->IsTabFrm())
++    {
++        SwTabFrm *pPrevTabFrm = (SwTabFrm*)pPrec;
++        assert(this == pPrevTabFrm->GetFollow());
++        if (pPrevTabFrm->HasFollowFlowLine() && pPrevTabFrm->GetFollow() == this)
++            return pPrevTabFrm;
++    }
++    return NULL;
++}
++
+ SwTabFrm::~SwTabFrm()
+ {
++    //rhbz#907933, we are a follow flow line for something and have been
++    //deleted, remove ourself as a follow flowline
++    SwTabFrm* pFlowFrameFor = GetFollowFlowLineFor();
++    if (pFlowFrameFor)
++        pFlowFrameFor->RemoveFollowFlowLine();
++
+     // There is some terrible code in fetab.cxx, that
+     // makes use of these global pointers. Obviously
+     // this code did not consider that a TabFrm can be
+-- 
+1.8.1.2
+
diff --git a/libreoffice.spec b/libreoffice.spec
index 00303d5..63e3949 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -207,14 +207,8 @@ BuildRequires: tomcat-servlet-3.0-api
 BuildRequires: bsh
 %if 0%{?rhel} && 0%{?rhel} < 7
 BuildRequires: hsqldb
-%ifarch %{ix86} x86_64 s390 s390x
-BuildRequires: java-devel >= 1:1.6.0
-%else
-BuildRequires: java-devel
 %endif
-%else
 BuildRequires: java-devel
-%endif
 BuildRequires: jakarta-commons-httpclient
 %if 0%{?fedora} || 0%{?rhel} >= 7
 BuildRequires: junit
@@ -265,6 +259,7 @@ Patch25: 0001-fdo-60491-scp2-always-package-emboleobj-library-on-n.patch
 Patch26: 0001-Resolves-rhbz-895196-sc-filter-float-a11y-parent-of-.patch
 Patch27: 0001-do-not-access-vector-elements-beyond-size-rhbz-84751.patch
 Patch28: 0001-rhbz-742780-Let-make-OPT_FLAGS-.-override-SDK-optimi.patch
+Patch29: 0001-Resolves-rhbz-907933-crash-on-removing-second-last-p.patch
 
 %define instdir %{_libdir}
 %define baseinstdir %{instdir}/libreoffice
@@ -1016,6 +1011,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc
 %patch26 -p1 -b .rhbz-895196-sc-filter-float-a11y-parent-of-.patch
 %patch27 -p1 -b .do-not-access-vector-elements-beyond-size-rhbz-84751.patch
 %patch28 -p1 -b .rhbz-742780-Let-make-OPT_FLAGS-.-override-SDK-optimi.patch
+%patch29 -p1 -b .rhbz-907933-crash-on-removing-second-last-p.patch
 
 # TODO: check this
 # these are horribly incomplete--empty translations and copied english
@@ -2083,9 +2079,10 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
 %endif
 
 %changelog
-* Wed Feb 20 2013 Eike Rathke <erack at redhat.com> - 1:4.0.0.3-8-UNBUILT
+* Tue Feb 26 2013 Eike Rathke <erack at redhat.com> - 1:4.0.0.3-8
 - do not access vector elements beyond size, rhbz#847519 related
 - Resolves: rhbz#742780 let make OPT_FLAGS=... override SDK flags
+- Resolves: rhbz#907933 crash on removing second last para
 
 * Tue Feb 19 2013 Caolán McNamara <caolanm at redhat.com> - 1:4.0.0.3-7
 - Resolves: rhbz#895196 sc filter float a11y parent of itself


More information about the scm-commits mailing list