diff --git extensions/source/ole/oleobjw.cxx extensions/source/ole/oleobjw.cxx index 7c6d6d6..32f0ffd 100644 --- extensions/source/ole/oleobjw.cxx +++ extensions/source/ole/oleobjw.cxx @@ -1908,11 +1991,17 @@ void IUnknownWrapper_Impl::getFuncDesc(const OUString & sFuncName, FUNCDESC ** p //get the associated index and add an entry to the map //with the name sFuncName which differs in the casing of the letters to //the actual name as obtained from ITypeInfo - cit itOrg = m_mapComFunc.find(OUString(reinterpret_cast(LPCOLESTR(memberName)))); + OUString sRealName(reinterpret_cast(LPCOLESTR(memberName))); + cit itOrg = m_mapComFunc.find(sRealName); OSL_ASSERT(itOrg != m_mapComFunc.end()); + // maybe this is a property, if so we need + // to store either both id's ( put/get ) or + // just the get. Storing both is more consistent + pair pItems = m_mapComFunc.equal_range( sRealName ); + for ( ;pItems.first != pItems.second; ++pItems.first ) + m_mapComFunc.insert( TLBFuncIndexMap::value_type ( make_pair(sFuncName, pItems.first->second ) )); itIndex = - m_mapComFunc.insert( TLBFuncIndexMap::value_type - ( make_pair(sFuncName, itOrg->second ) )); + m_mapComFunc.find( sFuncName ); } } }