diff options
author | Michael Stahl <mstahl@redhat.com> | 2014-10-22 23:45:22 +0200 |
---|---|---|
committer | Michael Stahl <mstahl@redhat.com> | 2014-10-23 00:04:19 +0200 |
commit | 72f368f6bfedb680ffcbd1c7fe28e8fc6d19ad2b (patch) | |
tree | bc1c10f8d29b9e3147b12a859fa1665b8fe65d76 /sw/inc/txtatr.hxx | |
parent | bc87f12c6a045203d3bb3c0d0e38693c25efa1f9 (diff) |
sw: fix undefined casts of SwTxtInputFld
... as reported by sberg via UBSan in CppunitTest_sw_mailmerge:
> sw/source/core/txtnode/thints.cxx:3207:38: runtime error: downcast of address 0x000003cadcb0 which does not point to an object of type 'SwTxtAttrNesting'
> 0x000003cadcb0: note: object is of type 'SwTxtInputFld'
> #0 in SwpHints::TryInsertHint(SwTxtAttr*, SwTxtNode&, unsigned short) sw/source/core/txtnode/thints.cxx:3207:13
> #1 in SwTxtNode::InsertHint(SwTxtAttr*, unsigned short) sw/source/core/txtnode/thints.cxx:1583:25
> #2 in SwTxtNode::SetAttr(SfxItemSet const&, int, int, unsigned short) sw/source/core/txtnode/thints.cxx:1943:39
> #3 in SwRegHistory::InsertItems(SfxItemSet const&, int, int, unsigned short) sw/source/core/undo/rolbck.cxx:1390:28
> #4 in (anonymous namespace)::lcl_InsAttr(SwDoc*, SwPaM const&, SfxItemSet const&, unsigned short, SwUndoAttr*, bool) sw/source/core/doc/DocumentContentOperationsManager.cxx:1169:28
> #5 in sw::DocumentContentOperationsManager::InsertPoolItem(SwPaM const&, SfxPoolItem const&, unsigned short, bool) sw/source/core/doc/DocumentContentOperationsManager.cxx:3041:23
> #6 in SwXTextField::attach(com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) sw/source/core/unocore/unofield.cxx:1966:13 > #7 in non-virtual thunk to SwXTextField::attach(com::sun::star::uno::Reference<com::sun::star::text::XTextRange> const&) sw/source/core/unocore/unofield.cxx:2061:1
The SwTxtInputFld is unusual because it's both a field and has a range;
let's try to use virtual inheritance to inherit both from
SwTxtFld and SwTxtAttrNesting. Sadly requires dynamic_cast everywhere.
Change-Id: I69f834d2b78ef7cdaac1f554bd80711084efcd02
Diffstat (limited to 'sw/inc/txtatr.hxx')
-rw-r--r-- | sw/inc/txtatr.hxx | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/sw/inc/txtatr.hxx b/sw/inc/txtatr.hxx index b8720b09ec6f..a5a4e1d8b282 100644 --- a/sw/inc/txtatr.hxx +++ b/sw/inc/txtatr.hxx @@ -50,14 +50,6 @@ public: }; -class SwTxtAttrNesting : public SwTxtAttrEnd -{ -protected: - SwTxtAttrNesting( SfxPoolItem & i_rAttr, - const sal_Int32 i_nStart, const sal_Int32 i_nEnd ); - virtual ~SwTxtAttrNesting(); -}; - class SwTxtMeta : public SwTxtAttrNesting { private: |