diff --git a/0001-tdf-78854-do-not-crash-when-undoing-layout-change.patch b/0001-tdf-78854-do-not-crash-when-undoing-layout-change.patch new file mode 100644 index 0000000..6bb517a --- /dev/null +++ b/0001-tdf-78854-do-not-crash-when-undoing-layout-change.patch @@ -0,0 +1,126 @@ +From 99ef0e66021f607441fafc49ffe89b5d60461674 Mon Sep 17 00:00:00 2001 +From: David Tardon +Date: Wed, 28 Jan 2015 09:18:51 +0100 +Subject: [PATCH] tdf#78854 do not crash when undoing layout change + +It turns out that the ordinal number adjustment that was added for +fdo#34548 is no longer necessary. + +(cherry picked from commit c0117fcb3dbd6c2a8d5e7679ee8d6fb29264ff6b) + +Change-Id: I2c491a008500b6a269b6f05a2a72f5aa70edecb2 +--- + include/svx/svdundo.hxx | 3 -- + svx/source/svdraw/svdundo.cxx | 66 ------------------------------------------- + 2 files changed, 69 deletions(-) + +diff --git a/include/svx/svdundo.hxx b/include/svx/svdundo.hxx +index 2904d87..0e30db9 100644 +--- a/include/svx/svdundo.hxx ++++ b/include/svx/svdundo.hxx +@@ -242,9 +242,6 @@ protected: + SdrView* pView; // To be able to re-create the selection for a + SdrPageView* pPageView; // for a ObjDel, Undo + sal_uInt32 nOrdNum; +- // It's possible that the object is re-assigned during a Undo/Redo. +- // The object is deleted in the dtor, if bOwner==TRUE +- ObjListListener* m_pListener; + + protected: + SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect = false); +diff --git a/svx/source/svdraw/svdundo.cxx b/svx/source/svdraw/svdundo.cxx +index b51142e..e50c958 100644 +--- a/svx/source/svdraw/svdundo.cxx ++++ b/svx/source/svdraw/svdundo.cxx +@@ -678,73 +678,11 @@ OUString SdrUndoGeoObj::GetComment() const + + + +-class SdrUndoObjList::ObjListListener : public SfxListener +-{ +-public: +- ObjListListener(SdrUndoObjList& rThat, SdrObject& rObject, SfxBroadcaster& rBroadcaster); +- virtual ~ObjListListener(); +- +-private: +- virtual void Notify(SfxBroadcaster& rBroadcaster, const SfxHint& rHint) SAL_OVERRIDE; +- +-private: +- SdrUndoObjList& m_rThat; +- SdrObject& m_rObject; +- SfxBroadcaster* m_pBroadcaster; +-}; +- +-SdrUndoObjList::ObjListListener::ObjListListener(SdrUndoObjList& rThat, SdrObject& rObject, SfxBroadcaster& rBroadcaster) +- : m_rThat(rThat) +- , m_rObject(rObject) +- , m_pBroadcaster(&rBroadcaster) +-{ +- StartListening(*m_pBroadcaster); +-} +- +-SdrUndoObjList::ObjListListener::~ObjListListener() +-{ +- if (m_pBroadcaster) +- EndListening(*m_pBroadcaster); +-} +- +-void SdrUndoObjList::ObjListListener::Notify(SfxBroadcaster&, const SfxHint& rHint) +-{ +- const SdrHint* const pSdrHint(dynamic_cast(&rHint)); +- if (pSdrHint) +- { +- if (pSdrHint->GetObject() == &m_rObject) +- { +- switch (pSdrHint->GetKind()) +- { +- case HINT_OBJCHG : +- if (IsListening(*m_pBroadcaster)) +- { +- const sal_uInt32 nNewOrdNum(m_rObject.GetOrdNum()); +- if (nNewOrdNum != m_rThat.GetOrdNum()) +- m_rThat.SetOrdNum(nNewOrdNum); +- } +- break; +- case HINT_OBJREMOVED : +- SAL_WARN_IF(!IsListening(*m_pBroadcaster), "svx.sdr", "Object is not in any list"); +- EndListening(*m_pBroadcaster); +- break; +- case HINT_OBJINSERTED : +- SAL_WARN_IF(IsListening(*m_pBroadcaster), "svx.sdr", "Object is already in a list"); +- StartListening(*m_pBroadcaster); +- break; +- default : +- break; +- } +- } +- } +-} +- + SdrUndoObjList::SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect) + : SdrUndoObj(rNewObj) + , bOwner(false) + , pView(NULL) + , pPageView(NULL) +- , m_pListener(NULL) + { + pObjList=pObj->GetObjList(); + if (bOrdNumDirect) +@@ -755,14 +693,10 @@ SdrUndoObjList::SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect) + { + nOrdNum=pObj->GetOrdNum(); + } +- +- m_pListener = new ObjListListener(*this, *pObj, *pObj->GetModel()); + } + + SdrUndoObjList::~SdrUndoObjList() + { +- delete m_pListener; +- + if (pObj!=NULL && IsOwner()) + { + // Attribute have to go back to the regular Pool +-- +2.4.2 + diff --git a/libreoffice.spec b/libreoffice.spec index 9694d7d..d5808d1 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -389,6 +389,7 @@ Patch77: 0002-java-dir-for-powepc64-and-powepc64le-can-differ.patch Patch78: 0001-rulers-Make-the-numbers-a-bit-smaller-and-always-wit.patch Patch79: 0001-Resolves-tdf-91420-Jan1-2015-is-a-valid-date.patch Patch80: 0001-tdf-91425-CRASH-Calc-Insert-Columns-Left.patch +Patch81: 0001-tdf-78854-do-not-crash-when-undoing-layout-change.patch %define instdir %{_libdir} %define baseinstdir %{instdir}/libreoffice @@ -2365,9 +2366,11 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %endif %changelog -* Mon Jun 01 2015 Eike Rathke - 1:4.3.7.2-7-UNBUILT +* Mon Jun 08 2015 Eike Rathke - 1:4.3.7.2-7-UNBUILT - Resolves: tdf#91420 "Jan1, 2015" is a valid date - Resolves: tdf#91425 CRASH - Calc Insert Columns Left +- Resolves: rhbz#1212214 - [abrt] libreoffice-core: + SdrObjList::RecalcRects(): soffice.bin killed by SIGSEGV * Tue May 19 2015 Caolán McNamara - 1:4.3.7.2-6 - Resolves: rhbz#1219137 tweak ruler for happenchance side-effect