diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2021-10-26 10:53:02 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2021-10-26 23:09:34 +0200 |
commit | 58edf898989c8cba7e05bdac90db812a52ea03f2 (patch) | |
tree | 01a25a44f70cdfc220e1c0259510d40ccc6d946e /cppu/source | |
parent | 3fd9f90cfa620d7148d969a41df86da9e26e43f7 (diff) |
d46f659c7524625474f0bb907805e285ee27d5ec follow-up: simplify checks
Change-Id: Ib95e7c562741f76a742cd31aa033956a0f0a3c45
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124169
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'cppu/source')
-rw-r--r-- | cppu/source/uno/assign.hxx | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/cppu/source/uno/assign.hxx b/cppu/source/uno/assign.hxx index c6a2cf58b457..3e2893fde824 100644 --- a/cppu/source/uno/assign.hxx +++ b/cppu/source/uno/assign.hxx @@ -384,20 +384,17 @@ inline bool _assignData( } return false; case typelib_TypeClass_SEQUENCE: - if (typelib_TypeClass_SEQUENCE != pSourceType->eTypeClass) + if (!_type_equals( pDestType, pSourceType )) return false; - // self assignment: - if (*static_cast<uno_Sequence **>(pSource) == *static_cast<uno_Sequence **>(pDest)) - return _type_equals(pDestType, pSourceType); // E.g. static empty sequence may be shared - if (_type_equals( pDestType, pSourceType )) + // check self assignment (only after _type_equals, to account for shared static empty): + if (*static_cast<uno_Sequence **>(pSource) != *static_cast<uno_Sequence **>(pDest)) { osl_atomic_increment( &(*static_cast<uno_Sequence **>(pSource))->nRefCount ); idestructSequence( *static_cast<uno_Sequence **>(pDest), pDestType, pDestTypeDescr, release ); *static_cast<uno_Sequence **>(pDest) = *static_cast<uno_Sequence **>(pSource); - return true; } - return false; + return true; case typelib_TypeClass_INTERFACE: if (typelib_TypeClass_INTERFACE != pSourceType->eTypeClass) return false; |