diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-03-04 16:39:15 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2018-03-04 21:48:17 +0100 |
commit | 135d7fe4bbff4183455d32005affcf89228faceb (patch) | |
tree | b6920fb43ce44b06539a9ff2bc6bc844b942e82f /filter | |
parent | 09c311b0fb4dbed5220ca50f133687ebfea24646 (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.cxx | 9 | ||||
-rw-r--r-- | filter/source/msfilter/svdfppt.cxx | 19 |
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. |