comphelper/source/property/propertysetinfo.cxx | 10 +++++----- include/comphelper/propertysetinfo.hxx | 3 ++- 2 files changed, 7 insertions(+), 6 deletions(-)
New commits: commit b03aa654eb2e2980f3efc0347b1435414d8f1d09 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Wed May 11 11:00:42 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Wed May 11 15:16:17 2022 +0200 cache the Sequence we return in comphelper::PropertySetInfo::getProperties Change-Id: If4e6e43be5d7380665e56bf95c446ff14e6a7213 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/134155 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/comphelper/source/property/propertysetinfo.cxx b/comphelper/source/property/propertysetinfo.cxx index 049827d7e45f..919198772932 100644 --- a/comphelper/source/property/propertysetinfo.cxx +++ b/comphelper/source/property/propertysetinfo.cxx @@ -37,7 +37,7 @@ void PropertySetInfo::addImpl(PropertyMapEntry const * pMap) noexcept maPropertyMap[pMap->maName] = pMap; - maProperties.clear(); + maProperties.realloc(0); ++pMap; } @@ -90,7 +90,7 @@ void PropertySetInfo::add( PropertyMapEntry const * pMap ) noexcept void PropertySetInfo::remove( const OUString& aName ) noexcept { maPropertyMap.erase( aName ); - maProperties.clear(); + maProperties.realloc(0); } Sequence< css::beans::Property > SAL_CALL PropertySetInfo::getProperties() @@ -100,8 +100,8 @@ Sequence< css::beans::Property > SAL_CALL PropertySetInfo::getProperties() // to getProperties if( maProperties.size() != maPropertyMap.size() ) { - maProperties.resize( maPropertyMap.size() ); - auto propIter = maProperties.begin(); + maProperties.realloc( maPropertyMap.size() ); + auto propIter = maProperties.getArray(); for( const auto& rProperty : maPropertyMap ) { @@ -115,7 +115,7 @@ Sequence< css::beans::Property > SAL_CALL PropertySetInfo::getProperties() ++propIter; } } - return comphelper::containerToSequence(maProperties); + return maProperties; } Property SAL_CALL PropertySetInfo::getPropertyByName( const OUString& aName ) diff --git a/include/comphelper/propertysetinfo.hxx b/include/comphelper/propertysetinfo.hxx index 34717fcc6c2d..a1df9c657476 100644 --- a/include/comphelper/propertysetinfo.hxx +++ b/include/comphelper/propertysetinfo.hxx @@ -114,7 +114,8 @@ private: void addImpl(PropertyMapEntry const * pMap) noexcept; PropertyMap maPropertyMap; - std::vector< css::beans::Property > maProperties; + /// Cache the value we return in getProperties because it is expensive to construct + css::uno::Sequence< css::beans::Property > maProperties; }; }