summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2015-03-04 13:52:03 +0100
committerStephan Bergmann <sbergman@redhat.com>2015-03-04 13:52:03 +0100
commit0f98299f7aa44bbb55c1bfeddca7799f727d14b0 (patch)
treed69151f02a734814ec5f88b2cd2d06773c4c01b8
parentdedc93e973b59ca4d1660fc3820770bf9b072896 (diff)
Avoid bad downcast of SwFrmFmt to SwSectionFmt
as observed by -fsanitize=vptr e.g. during CppunitTest_writerperfect_writer: SwFmtsModifyBase<SwSectionFmt*>::Contains(SwFmt const*) const SwUndoFmtAttr::Init() SwUndoFmtAttr::SwUndoFmtAttr(SfxItemSet const&, SwFmt&, bool) SwDoc::ChgFmt(SwFmt&, SfxItemSet const&) SwDocStyleSheet::SetItemSet(SfxItemSet const&, bool) SwXStyle::SetPropertyValues_Impl(com::sun::star::uno::Sequence<rtl::OUString> const&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) SwXStyle::setPropertyValues(com::sun::star::uno::Sequence<rtl::OUString> const&, com::sun::star::uno::Sequence<com::sun::star::uno::Any> const&) SvXMLImportPropertyMapper::_FillMultiPropertySet(std::__debug::vector<XMLPropertyState, std::allocator<XMLPropertyState> > const&, com::sun::star::uno::Reference<com::sun::star::beans::XMultiPropertySet> const&, com::sun::star::uno::Reference<com::sun::star::beans::XPropertySetInfo> const&, rtl::Reference<XMLPropertySetMapper> const&, _ContextID_Index_Pair*) SvXMLImportPropertyMapper::FillPropertySet(std::__debug::vector<XMLPropertyState, std::allocator<XMLPropertyState> > const&, com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet>, _ContextID_Index_Pair*) const XMLShapeStyleContext::FillPropertySet(com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> const&) XMLPropStyleContext::CreateAndInsert(bool) XMLTextShapeStyleContext::CreateAndInsert(bool) SvXMLStylesContext::CopyStylesToDoc(bool, bool) SwXMLImport::InsertStyles(bool) SwXMLStylesContext_Impl::EndElement() SvXMLImport::endElement(rtl::OUString const&) ... Change-Id: Ibbf6d4def751c5a8ad1416e22b8b5255eda3dd44
-rw-r--r--sw/inc/docary.hxx6
1 files changed, 4 insertions, 2 deletions
diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
index 098851e487ce..8768cc037b70 100644
--- a/sw/inc/docary.hxx
+++ b/sw/inc/docary.hxx
@@ -128,8 +128,10 @@ public:
inline sal_uInt16 GetPos(const SwFmt *p) const
{ return SwVectorModifyBase<Value>::GetPos( static_cast<Value>( const_cast<SwFmt*>( p ) ) ); }
- inline bool Contains(const SwFmt *p) const
- { return SwVectorModifyBase<Value>::Contains( static_cast<Value>( const_cast<SwFmt*>( p ) ) ); }
+ inline bool Contains(const SwFmt *p) const {
+ Value p2 = dynamic_cast<Value>(const_cast<SwFmt*>(p));
+ return p2 != nullptr && SwVectorModifyBase<Value>::Contains(p2);
+ }
};
class SwGrfFmtColls : public SwFmtsModifyBase<SwGrfFmtColl*>