diff options
author | Noel Grandin <noelgrandin@gmail.com> | 2021-01-02 20:35:33 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-01-03 08:53:17 +0100 |
commit | 3140d30ba56b95536e9f92ef3074579524791fe5 (patch) | |
tree | 47f57f036133ad06b4fff5ce63c842c40af0e4ef /svl | |
parent | f4e8c28e465d103a7ac4bc711e3b23ad3cae9996 (diff) |
tighten up asserting in SfxPoolItem::operator==
...subclasses, so we always call the SfxPoolItem::operatar==
which will ensure that we are always comparing two objects that
belong to the same class.
And fix the fallout in SvxUnoNameItemTable.
Change-Id: I5ec7fedaa914a328897b54c016ad13e505a15937
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108599
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svl')
-rw-r--r-- | svl/source/items/cenumitm.cxx | 2 | ||||
-rw-r--r-- | svl/source/items/cintitem.cxx | 8 | ||||
-rw-r--r-- | svl/source/items/custritm.cxx | 2 | ||||
-rw-r--r-- | svl/source/items/poolitem.cxx | 4 |
4 files changed, 10 insertions, 6 deletions
diff --git a/svl/source/items/cenumitm.cxx b/svl/source/items/cenumitm.cxx index 3d0b7e581d52..a2b62d132c23 100644 --- a/svl/source/items/cenumitm.cxx +++ b/svl/source/items/cenumitm.cxx @@ -91,7 +91,7 @@ SfxPoolItem* SfxBoolItem::CreateDefault() // virtual bool SfxBoolItem::operator ==(const SfxPoolItem & rItem) const { - assert(dynamic_cast<const SfxBoolItem*>(&rItem) != nullptr); + assert(SfxPoolItem::operator==(rItem)); return m_bValue == static_cast< SfxBoolItem const * >(&rItem)->m_bValue; } diff --git a/svl/source/items/cintitem.cxx b/svl/source/items/cintitem.cxx index 0f522f7a9260..d9a77adc2a23 100644 --- a/svl/source/items/cintitem.cxx +++ b/svl/source/items/cintitem.cxx @@ -25,7 +25,7 @@ // virtual bool CntByteItem::operator ==(const SfxPoolItem & rItem) const { - assert(dynamic_cast<const CntByteItem*>(&rItem) != nullptr); + assert(SfxPoolItem::operator==(rItem)); return m_nValue == static_cast< const CntByteItem * >(&rItem)->m_nValue; } @@ -69,7 +69,7 @@ CntByteItem* CntByteItem::Clone(SfxItemPool *) const // virtual bool CntUInt16Item::operator ==(const SfxPoolItem & rItem) const { - assert(dynamic_cast<const CntUInt16Item*>(&rItem) != nullptr); + assert(SfxPoolItem::operator==(rItem)); return m_nValue == static_cast<const CntUInt16Item *>(&rItem)->m_nValue; } @@ -116,7 +116,7 @@ CntUInt16Item* CntUInt16Item::Clone(SfxItemPool *) const // virtual bool CntInt32Item::operator ==(const SfxPoolItem & rItem) const { - assert(dynamic_cast<const CntInt32Item*>(&rItem) != nullptr); + assert(SfxPoolItem::operator==(rItem)); return m_nValue == static_cast<const CntInt32Item *>(&rItem)->m_nValue; } @@ -161,7 +161,7 @@ CntInt32Item* CntInt32Item::Clone(SfxItemPool *) const // virtual bool CntUInt32Item::operator ==(const SfxPoolItem & rItem) const { - assert(dynamic_cast<const CntUInt32Item*>(&rItem) != nullptr); + assert(SfxPoolItem::operator==(rItem)); return m_nValue == static_cast<const CntUInt32Item *>(&rItem)->m_nValue; } diff --git a/svl/source/items/custritm.cxx b/svl/source/items/custritm.cxx index b6946a4f4e6e..21c835ece189 100644 --- a/svl/source/items/custritm.cxx +++ b/svl/source/items/custritm.cxx @@ -27,7 +27,7 @@ // virtual bool CntUnencodedStringItem::operator ==(const SfxPoolItem & rItem) const { - assert(dynamic_cast<const CntUnencodedStringItem*>( &rItem )); + assert(SfxPoolItem::operator==(rItem)); return m_aValue == static_cast< const CntUnencodedStringItem * >(&rItem)-> m_aValue; diff --git a/svl/source/items/poolitem.cxx b/svl/source/items/poolitem.cxx index 6cd15433e8b3..c6e3ad6c77d8 100644 --- a/svl/source/items/poolitem.cxx +++ b/svl/source/items/poolitem.cxx @@ -21,6 +21,7 @@ #include <unotools/intlwrapper.hxx> #include <unotools/syslocale.hxx> #include <osl/diagnose.h> +#include <sal/log.hxx> #include <libxml/xmlwriter.h> #include <typeinfo> #include <boost/property_tree/ptree.hpp> @@ -482,6 +483,9 @@ SfxPoolItem::~SfxPoolItem() bool SfxPoolItem::operator==(const SfxPoolItem& rCmp) const { + SAL_WARN_IF(typeid(rCmp) != typeid(*this), "svl", + "comparing different pool item subclasses " << typeid(rCmp).name() << " && " + << typeid(*this).name()); assert(typeid(rCmp) == typeid(*this) && "comparing different pool item subclasses"); (void)rCmp; return true; |