summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2021-01-02 20:35:33 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2021-01-03 08:53:17 +0100
commit3140d30ba56b95536e9f92ef3074579524791fe5 (patch)
tree47f57f036133ad06b4fff5ce63c842c40af0e4ef /svl
parentf4e8c28e465d103a7ac4bc711e3b23ad3cae9996 (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.cxx2
-rw-r--r--svl/source/items/cintitem.cxx8
-rw-r--r--svl/source/items/custritm.cxx2
-rw-r--r--svl/source/items/poolitem.cxx4
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;