summaryrefslogtreecommitdiff
path: root/filter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-03-04 16:39:15 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-03-04 21:48:17 +0100
commit135d7fe4bbff4183455d32005affcf89228faceb (patch)
treeb6920fb43ce44b06539a9ff2bc6bc844b942e82f /filter
parent09c311b0fb4dbed5220ca50f133687ebfea24646 (diff)
ofz#6723 Bad-cast
Change-Id: I5806e1bbc1a03984d411f222e8c01405bc767fc5 Reviewed-on: https://gerrit.libreoffice.org/50744 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'filter')
-rw-r--r--filter/source/msfilter/msdffimp.cxx9
-rw-r--r--filter/source/msfilter/svdfppt.cxx19
2 files changed, 26 insertions, 2 deletions
diff --git a/filter/source/msfilter/msdffimp.cxx b/filter/source/msfilter/msdffimp.cxx
index 76f67d63f3b6..ec6311454449 100644
--- a/filter/source/msfilter/msdffimp.cxx
+++ b/filter/source/msfilter/msdffimp.cxx
@@ -4116,7 +4116,7 @@ SdrObject* SvxMSDffManager::ImportGroup( const DffRecordHeader& rHd, SvStream& r
insertShapeId(nShapeId, pTmp);
}
else
- SdrObject::Free(pTmp);
+ FreeObj(pClientData, pTmp);
}
}
else if ( aRecHd2.nRecType == DFF_msofbtSpContainer )
@@ -4135,7 +4135,7 @@ SdrObject* SvxMSDffManager::ImportGroup( const DffRecordHeader& rHd, SvStream& r
insertShapeId(nShapeId, pTmp);
}
else
- SdrObject::Free(pTmp);
+ FreeObj(pClientData, pTmp);
}
}
if (!aRecHd2.SeekToEndOfRecord(rSt))
@@ -5035,6 +5035,11 @@ void SvxMSDffManager::GetGroupAnchors( const DffRecordHeader& rHd, SvStream& rSt
}
}
+void SvxMSDffManager::FreeObj(void* /*pData*/, SdrObject* pObj)
+{
+ SdrObject::Free(pObj);
+}
+
SdrObject* SvxMSDffManager::ProcessObj(SvStream& rSt,
DffObjData& rObjData,
void* pData,
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 09bc2aacdbb7..92380143e9ab 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -715,6 +715,25 @@ sal_uLong DffPropSet::SanitizeEndPos(SvStream &rIn, sal_uLong nEndRecPos)
return nEndRecPos;
}
+void SdrEscherImport::FreeObj(void* pData, SdrObject* pObj)
+{
+ ProcessData& rData = *static_cast<ProcessData*>(pData);
+ PptSlidePersistEntry& rPersistEntry = rData.rPersistEntry;
+ if (rPersistEntry.xSolverContainer)
+ {
+ for (auto & pPtr : rPersistEntry.xSolverContainer->aCList)
+ {
+ if (pPtr->pAObj == pObj)
+ pPtr->pAObj = nullptr;
+ if (pPtr->pBObj == pObj)
+ pPtr->pBObj = nullptr;
+ if (pPtr->pCObj == pObj)
+ pPtr->pCObj = nullptr;
+ }
+ }
+ SvxMSDffManager::FreeObj(pData, pObj);
+}
+
/* ProcessObject is called from ImplSdPPTImport::ProcessObj to handle all application specific things,
such as the import of text, animation effects, header footer and placeholder.