From e146741ec96292ef092c6eebfd7fe18fa5ca3cc0 Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Fri, 24 Feb 2017 11:24:46 +0200 Subject: [PATCH] better fix for tdf#103830 the first fix in commit 3a404ea870f1eed86f9765447ce0a364d39ae8f8 did not take into account that this a multimap, not a map. Thanks to Aron Budea for spotting that. Change-Id: I86d2d2a9d6cb08fd3cee3965a5b787d5691f0352 Reviewed-on: https://gerrit.libreoffice.org/34604 Tested-by: Jenkins Reviewed-by: Noel Grandin --- forms/source/misc/InterfaceContainer.cxx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/forms/source/misc/InterfaceContainer.cxx b/forms/source/misc/InterfaceContainer.cxx index 13a8336e5a2a..ca07115fd74f 100644 --- a/forms/source/misc/InterfaceContainer.cxx +++ b/forms/source/misc/InterfaceContainer.cxx @@ -661,13 +661,15 @@ void OInterfaceContainer::propertyChange(const PropertyChangeEvent& evt) { if (evt.PropertyName == PROPERTY_NAME) { ::osl::MutexGuard aGuard( m_rMutex ); - OInterfaceMap::iterator i = m_aMap.find(::comphelper::getString(evt.OldValue)); - if (i != m_aMap.end() && i->second == evt.Source) - { - css::uno::Reference xCorrectType(i->second); - m_aMap.erase(i); - m_aMap.insert(::std::pair >(::comphelper::getString(evt.NewValue),xCorrectType)); - } + auto range = m_aMap.equal_range(::comphelper::getString(evt.OldValue)); + for (auto it = range.first; it != range.second; ++it) + if (it->second == evt.Source) + { + css::uno::Reference xCorrectType(it->second); + m_aMap.erase(it); + m_aMap.insert(::std::pair >(::comphelper::getString(evt.NewValue),xCorrectType)); + break; + } } }