lotuswordpro/inc/lwpfrib.hxx                |    4 ++++
 lotuswordpro/source/filter/lwpchangemgr.cxx |    2 ++
 lotuswordpro/source/filter/lwpfrib.cxx      |   18 +++++++++++++++++-
 3 files changed, 23 insertions(+), 1 deletion(-)

New commits:
commit b39f962e0be52f0d8380e1662f88a2f627fbfb89
Author: Caolán McNamara <caol...@redhat.com>
Date:   Fri Jan 12 09:43:41 2018 +0000

    ofz#5254 Bad-cast
    
    Change-Id: I318d441d841dd4c783f87ac2f3f699852e8b1039
    Reviewed-on: https://gerrit.libreoffice.org/47796
    Tested-by: Jenkins <c...@libreoffice.org>
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/lotuswordpro/inc/lwpfrib.hxx b/lotuswordpro/inc/lwpfrib.hxx
index 4e824c0002f4..6ff3cad39a98 100644
--- a/lotuswordpro/inc/lwpfrib.hxx
+++ b/lotuswordpro/inc/lwpfrib.hxx
@@ -97,6 +97,7 @@ public:
     OUString GetEditor();
     XFColor GetHighlightColor();
 protected:
+    std::map<LwpFrib*,OUString>* m_pFribMap;
     LwpPara* m_pPara;
     LwpFrib* m_pNext;
     sal_uInt8 m_nFribType;
@@ -119,6 +120,9 @@ public:
         REV_INSERT =0,
         REV_DELETE = 1,
     };
+
+    void Register(std::map<LwpFrib*,OUString>* pFribMap);
+    void Deregister();
 private:
     static void ReadModifiers(LwpObjectStream* pObjStrm,ModifierInfo* 
pModInfo);
 protected:
diff --git a/lotuswordpro/source/filter/lwpchangemgr.cxx 
b/lotuswordpro/source/filter/lwpchangemgr.cxx
index e08ee979869d..c04241aaccb4 100644
--- a/lotuswordpro/source/filter/lwpchangemgr.cxx
+++ b/lotuswordpro/source/filter/lwpchangemgr.cxx
@@ -89,6 +89,7 @@ LwpChangeMgr::LwpChangeMgr()
     m_pFribMap = &m_DocFribMap;
     m_ChangeList.clear();
 }
+
 LwpChangeMgr::~LwpChangeMgr()
 {
     m_pFribMap=nullptr;
@@ -102,6 +103,7 @@ void LwpChangeMgr::AddChangeFrib(LwpFrib* pFrib)
     m_nCounter++;
     OUString sID = "ct"+ OUString::number(m_nCounter);
     m_pFribMap->insert(std::pair<LwpFrib*,OUString>(pFrib,sID));
+    pFrib->Register(m_pFribMap);
 }
 
 OUString LwpChangeMgr::GetChangeID(LwpFrib* pFrib)
diff --git a/lotuswordpro/source/filter/lwpfrib.cxx 
b/lotuswordpro/source/filter/lwpfrib.cxx
index f9b3ad759d3c..919b257be043 100644
--- a/lotuswordpro/source/filter/lwpfrib.cxx
+++ b/lotuswordpro/source/filter/lwpfrib.cxx
@@ -87,7 +87,8 @@
 
 
 LwpFrib::LwpFrib(LwpPara* pPara)
-    : m_pPara(pPara)
+    : m_pFribMap(nullptr)
+    , m_pPara(pPara)
     , m_pNext(nullptr)
     , m_nFribType(0)
     , m_pModifiers(nullptr)
@@ -100,6 +101,7 @@ LwpFrib::LwpFrib(LwpPara* pPara)
 
 LwpFrib::~LwpFrib()
 {
+    Deregister();
 }
 
 LwpFrib* LwpFrib::CreateFrib(LwpPara* pPara, LwpObjectStream* pObjStrm, 
sal_uInt8 fribtag,sal_uInt8 editID)
@@ -447,4 +449,18 @@ XFColor LwpFrib::GetHighlightColor()
     return pGlobal->GetHighlightColor(m_nEditor);
 }
 
+void LwpFrib::Register(std::map<LwpFrib*,OUString>* pFribMap)
+{
+    m_pFribMap = pFribMap;
+}
+
+void LwpFrib::Deregister()
+{
+    if (m_pFribMap)
+    {
+        m_pFribMap->erase(this);
+        m_pFribMap = nullptr;
+    }
+}
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to