diff options
-rw-r--r-- | i18nlangtag/source/languagetag/languagetag.cxx | 89 | ||||
-rw-r--r-- | oox/source/core/xmlfilterbase.cxx | 2 | ||||
-rw-r--r-- | oox/source/drawingml/table/tableproperties.cxx | 11 | ||||
-rw-r--r-- | package/source/xstor/owriteablestream.cxx | 6 | ||||
-rw-r--r-- | package/source/xstor/xstorage.cxx | 6 | ||||
-rw-r--r-- | package/source/zippackage/ZipPackageFolder.cxx | 6 | ||||
-rw-r--r-- | package/source/zippackage/ZipPackageStream.cxx | 6 | ||||
-rw-r--r-- | sal/rtl/bootstrap.cxx | 10 | ||||
-rw-r--r-- | sal/rtl/rtl_process.cxx | 6 | ||||
-rw-r--r-- | sal/textenc/textenc.cxx | 10 | ||||
-rw-r--r-- | sc/source/core/tool/formulaparserpool.cxx | 8 |
11 files changed, 67 insertions, 93 deletions
diff --git a/i18nlangtag/source/languagetag/languagetag.cxx b/i18nlangtag/source/languagetag/languagetag.cxx index 41f23973020f..07b9c6d0a666 100644 --- a/i18nlangtag/source/languagetag/languagetag.cxx +++ b/i18nlangtag/source/languagetag/languagetag.cxx @@ -49,24 +49,19 @@ struct myLtError ~myLtError() { if (p) lt_error_unref( p); } }; -// "static" to be returned as const reference to an empty locale. -struct theEmptyLocale : public rtl::Static< lang::Locale, theEmptyLocale > {}; } typedef std::unordered_set< OUString > KnownTagSet; namespace { -struct theKnowns : public rtl::Static< KnownTagSet, theKnowns > {}; struct theMutex : public rtl::Static< osl::Mutex, theMutex > {}; } static const KnownTagSet & getKnowns() { - KnownTagSet & rKnowns = theKnowns::get(); - if (rKnowns.empty()) - { - osl::MutexGuard aGuard( theMutex::get()); - if (rKnowns.empty()) + static const KnownTagSet theKnowns = + []() { + KnownTagSet knownSet; ::std::vector< MsLangId::LanguagetagMapping > aDefined( MsLangId::getDefinedLanguagetags()); for (auto const& elemDefined : aDefined) { @@ -76,12 +71,12 @@ static const KnownTagSet & getKnowns() ::std::vector< OUString > aFallbacks( LanguageTag( elemDefined.mnLang).getFallbackStrings( true)); for (auto const& fallback : aFallbacks) { - rKnowns.insert(fallback); + knownSet.insert(fallback); } } - } - } - return rKnowns; + return knownSet; + }(); + return theKnowns; } @@ -95,10 +90,10 @@ struct compareIgnoreAsciiCaseLess }; typedef ::std::map< OUString, LanguageTag::ImplPtr, compareIgnoreAsciiCaseLess > MapBcp47; typedef ::std::map< LanguageType, LanguageTag::ImplPtr > MapLangID; -struct theMapBcp47 : public rtl::Static< MapBcp47, theMapBcp47 > {}; -struct theMapLangID : public rtl::Static< MapLangID, theMapLangID > {}; -struct theDontKnow : public rtl::Static< LanguageTag::ImplPtr, theDontKnow > {}; -struct theSystemLocale : public rtl::Static< LanguageTag::ImplPtr, theSystemLocale > {}; +MapBcp47 theMapBcp47; +MapLangID theMapLangID; +LanguageTag::ImplPtr theDontKnow; +LanguageTag::ImplPtr theSystemLocale; } @@ -598,10 +593,9 @@ LanguageTag::ImplPtr LanguageTagImpl::registerOnTheFly( LanguageType nRegisterID osl::MutexGuard aGuard( theMutex::get()); - MapBcp47& rMapBcp47 = theMapBcp47::get(); - MapBcp47::const_iterator it( rMapBcp47.find( maBcp47)); + MapBcp47::const_iterator it( theMapBcp47.find( maBcp47)); bool bOtherImpl = false; - if (it != rMapBcp47.end()) + if (it != theMapBcp47.end()) { SAL_INFO( "i18nlangtag", "LanguageTag::registerOnTheFly: found impl for '" << maBcp47 << "'"); pImpl = (*it).second; @@ -621,7 +615,7 @@ LanguageTag::ImplPtr LanguageTagImpl::registerOnTheFly( LanguageType nRegisterID { SAL_INFO( "i18nlangtag", "LanguageTag::registerOnTheFly: new impl for '" << maBcp47 << "'"); pImpl = std::make_shared<LanguageTagImpl>( *this); - rMapBcp47.insert( ::std::make_pair( maBcp47, pImpl)); + theMapBcp47.insert( ::std::make_pair( maBcp47, pImpl)); } if (!bOtherImpl || !pImpl->mbInitializedLangID) @@ -634,9 +628,8 @@ LanguageTag::ImplPtr LanguageTagImpl::registerOnTheFly( LanguageType nRegisterID // different, otherwise we would end up with ambiguous assignments // of different language tags, for example for the same primary // LangID with "no", "nb" and "nn". - const MapLangID& rMapLangID = theMapLangID::get(); - MapLangID::const_iterator itID( rMapLangID.find( nRegisterID)); - if (itID != rMapLangID.end()) + MapLangID::const_iterator itID( theMapLangID.find( nRegisterID)); + if (itID != theMapLangID.end()) { if ((*itID).second->maBcp47 != maBcp47) { @@ -667,7 +660,7 @@ LanguageTag::ImplPtr LanguageTagImpl::registerOnTheFly( LanguageType nRegisterID } ::std::pair< MapLangID::const_iterator, bool > res( - theMapLangID::get().insert( ::std::make_pair( pImpl->mnLangID, pImpl))); + theMapLangID.insert( ::std::make_pair( pImpl->mnLangID, pImpl))); if (res.second) { SAL_INFO( "i18nlangtag", "LanguageTag::registerOnTheFly: cross-inserted 0x" @@ -686,9 +679,8 @@ LanguageTag::ImplPtr LanguageTagImpl::registerOnTheFly( LanguageType nRegisterID LanguageTag::ScriptType LanguageTag::getOnTheFlyScriptType( LanguageType nRegisterID ) { - const MapLangID& rMapLangID = theMapLangID::get(); - MapLangID::const_iterator itID( rMapLangID.find( nRegisterID)); - if (itID != rMapLangID.end()) + MapLangID::const_iterator itID( theMapLangID.find( nRegisterID)); + if (itID != theMapLangID.end()) return (*itID).second->getScriptType(); else return ScriptType::UNKNOWN; @@ -709,7 +701,7 @@ void LanguageTag::setConfiguredSystemLanguage( LanguageType nLang ) MsLangId::LanguageTagAccess::setConfiguredSystemLanguage( nLang); // Reset system locale to none and let registerImpl() do the rest to // initialize a new one. - theSystemLocale::get().reset(); + theSystemLocale.reset(); LanguageTag aLanguageTag( LANGUAGE_SYSTEM); aLanguageTag.registerImpl(); } @@ -749,7 +741,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const // and take the system locale shortcut if possible. if (mbSystemLocale) { - pImpl = theSystemLocale::get(); + pImpl = theSystemLocale; if (pImpl) { #if OSL_DEBUG_LEVEL > 0 @@ -774,10 +766,9 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const // Heavy usage of LANGUAGE_DONTKNOW, make it an own Impl for all the // conversion attempts. At the same time provide a central breakpoint // to inspect such places. - LanguageTag::ImplPtr& rDontKnow = theDontKnow::get(); - if (!rDontKnow) - rDontKnow = std::make_shared<LanguageTagImpl>( *this); - pImpl = rDontKnow; + if (!theDontKnow) + theDontKnow = std::make_shared<LanguageTagImpl>( *this); + pImpl = theDontKnow; #if OSL_DEBUG_LEVEL > 0 static size_t nCallsDontKnow = 0; ++nCallsDontKnow; @@ -788,7 +779,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const else { // A great share are calls for a system equal locale. - pImpl = theSystemLocale::get(); + pImpl = theSystemLocale; if (pImpl && pImpl->mnLangID == mnLangID) { #if OSL_DEBUG_LEVEL > 0 @@ -819,7 +810,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const if (mbInitializedBcp47) { // A great share are calls for a system equal locale. - pImpl = theSystemLocale::get(); + pImpl = theSystemLocale; if (pImpl && pImpl->maBcp47 == maBcp47) { #if OSL_DEBUG_LEVEL > 0 @@ -852,9 +843,8 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const // Prefer LangID map as find+insert needs less comparison work. if (mbInitializedLangID) { - MapLangID& rMap = theMapLangID::get(); - MapLangID::const_iterator it( rMap.find( mnLangID)); - if (it != rMap.end()) + MapLangID::const_iterator it( theMapLangID.find( mnLangID)); + if (it != theMapLangID.end()) { SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: found impl for 0x" << ::std::hex << mnLangID); pImpl = (*it).second; @@ -863,7 +853,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const { SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: new impl for 0x" << ::std::hex << mnLangID); pImpl = std::make_shared<LanguageTagImpl>( *this); - rMap.insert( ::std::make_pair( mnLangID, pImpl)); + theMapLangID.insert( ::std::make_pair( mnLangID, pImpl)); // Try round-trip. if (!pImpl->mbInitializedLocale) pImpl->convertLangToLocale(); @@ -874,7 +864,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const if (!pImpl->mbInitializedBcp47) pImpl->convertLocaleToBcp47(); ::std::pair< MapBcp47::const_iterator, bool > res( - theMapBcp47::get().insert( ::std::make_pair( pImpl->maBcp47, pImpl))); + theMapBcp47.insert( ::std::make_pair( pImpl->maBcp47, pImpl))); if (res.second) { SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: cross-inserted '" << pImpl->maBcp47 << "' for 0x" << ::std::hex << mnLangID); @@ -895,9 +885,8 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const } else if (!maBcp47.isEmpty()) { - MapBcp47& rMap = theMapBcp47::get(); - MapBcp47::const_iterator it( rMap.find( maBcp47)); - if (it != rMap.end()) + MapBcp47::const_iterator it( theMapBcp47.find( maBcp47)); + if (it != theMapBcp47.end()) { SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: found impl for '" << maBcp47 << "'"); pImpl = (*it).second; @@ -906,14 +895,14 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const { SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: new impl for '" << maBcp47 << "'"); pImpl = std::make_shared<LanguageTagImpl>( *this); - ::std::pair< MapBcp47::iterator, bool > insOrig( rMap.insert( ::std::make_pair( maBcp47, pImpl))); + ::std::pair< MapBcp47::iterator, bool > insOrig( theMapBcp47.insert( ::std::make_pair( maBcp47, pImpl))); // If changed after canonicalize() also add the resulting tag to // the map. if (pImpl->synCanonicalize()) { SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: canonicalized to '" << pImpl->maBcp47 << "'"); ::std::pair< MapBcp47::const_iterator, bool > insCanon( - rMap.insert( ::std::make_pair( pImpl->maBcp47, pImpl))); + theMapBcp47.insert( ::std::make_pair( pImpl->maBcp47, pImpl))); SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: " << (insCanon.second ? "" : "not ") << "inserted '" << pImpl->maBcp47 << "'"); // If the canonicalized tag already existed (was not inserted) @@ -957,7 +946,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const if (bInsert) { ::std::pair< MapLangID::const_iterator, bool > res( - theMapLangID::get().insert( ::std::make_pair( pImpl->mnLangID, pImpl))); + theMapLangID.insert( ::std::make_pair( pImpl->mnLangID, pImpl))); if (res.second) { SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: cross-inserted 0x" @@ -989,7 +978,7 @@ LanguageTag::ImplPtr LanguageTag::registerImpl() const // above, so add it. if (mbSystemLocale && mbInitializedLangID) { - theSystemLocale::get() = pImpl; + theSystemLocale = pImpl; SAL_INFO( "i18nlangtag", "LanguageTag::registerImpl: added system locale 0x" << ::std::hex << pImpl->mnLangID << " '" << pImpl->maBcp47 << "'"); } @@ -1699,7 +1688,11 @@ OUString LanguageTagImpl::getVariantsFromLangtag() const css::lang::Locale & LanguageTag::getLocale( bool bResolveSystem ) const { if (!bResolveSystem && mbSystemLocale) - return theEmptyLocale::get(); + { + // "static" to be returned as const reference to an empty locale. + static const lang::Locale theEmptyLocale; + return theEmptyLocale; + } if (!mbInitializedLocale) syncVarsFromImpl(); if (!mbInitializedLocale) diff --git a/oox/source/core/xmlfilterbase.cxx b/oox/source/core/xmlfilterbase.cxx index b2184e7a97d8..091c5c17e12e 100644 --- a/oox/source/core/xmlfilterbase.cxx +++ b/oox/source/core/xmlfilterbase.cxx @@ -156,7 +156,7 @@ struct NamespaceIds: public rtl::StaticWithInit< void registerNamespaces( FastParser& rParser ) { - const Sequence< beans::Pair<OUString, sal_Int32> > ids = NamespaceIds::get(); + const Sequence< beans::Pair<OUString, sal_Int32> >& ids = NamespaceIds::get(); // Filter out duplicates: a namespace can have multiple URLs, think of // strict vs transitional. diff --git a/oox/source/drawingml/table/tableproperties.cxx b/oox/source/drawingml/table/tableproperties.cxx index 69117123dca8..1622b8fc22ca 100644 --- a/oox/source/drawingml/table/tableproperties.cxx +++ b/oox/source/drawingml/table/tableproperties.cxx @@ -24,7 +24,6 @@ #include <oox/drawingml/drawingmltypes.hxx> #include <com/sun/star/table/XTable.hpp> #include <com/sun/star/table/XMergeableCellRange.hpp> -#include <rtl/instance.hxx> #include <oox/core/xmlfilterbase.hxx> #include "predefined-table-styles.cxx" @@ -89,11 +88,6 @@ static void MergeCells( const uno::Reference< XTable >& xTable, sal_Int32 nCol, } } -namespace -{ - struct theDefaultTableStyle : public ::rtl::Static< TableStyle, theDefaultTableStyle > {}; -} - const TableStyle& TableProperties::getUsedTableStyle( const ::oox::core::XmlFilterBase& rFilterBase, std::unique_ptr<TableStyle>& rTableStyleToDelete ) { ::oox::core::XmlFilterBase& rBase( const_cast< ::oox::core::XmlFilterBase& >( rFilterBase ) ); @@ -123,7 +117,10 @@ const TableStyle& TableProperties::getUsedTableStyle( const ::oox::core::XmlFilt } if ( !pTableStyle ) - return theDefaultTableStyle::get(); + { + static TableStyle theDefaultTableStyle; + return theDefaultTableStyle; + } return *pTableStyle; } diff --git a/package/source/xstor/owriteablestream.cxx b/package/source/xstor/owriteablestream.cxx index 5dd673f29171..1b13d49c79db 100644 --- a/package/source/xstor/owriteablestream.cxx +++ b/package/source/xstor/owriteablestream.cxx @@ -48,7 +48,6 @@ #include <comphelper/sequence.hxx> #include <rtl/digest.h> -#include <rtl/instance.hxx> #include <tools/diagnose_ex.h> #include <PackageConstants.hxx> @@ -1930,11 +1929,10 @@ uno::Sequence< uno::Type > SAL_CALL OWriteStream::getTypes() return m_pData->m_pTypeCollection->getTypes() ; } -namespace { struct lcl_ImplId : public rtl::Static< ::cppu::OImplementationId, lcl_ImplId > {}; } - uno::Sequence< sal_Int8 > SAL_CALL OWriteStream::getImplementationId() { - return css::uno::Sequence<sal_Int8>(); + static ::cppu::OImplementationId lcl_ImplId; + return lcl_ImplId.getImplementationId(); } sal_Int32 SAL_CALL OWriteStream::readBytes( uno::Sequence< sal_Int8 >& aData, sal_Int32 nBytesToRead ) diff --git a/package/source/xstor/xstorage.cxx b/package/source/xstor/xstorage.cxx index 24849a6c9062..f7e86b4234ad 100644 --- a/package/source/xstor/xstorage.cxx +++ b/package/source/xstor/xstorage.cxx @@ -53,7 +53,6 @@ #include <cppuhelper/queryinterface.hxx> #include <cppuhelper/typeprovider.hxx> #include <cppuhelper/exc_hlp.hxx> -#include <rtl/instance.hxx> #include <comphelper/storagehelper.hxx> #include <comphelper/ofopxmlhelper.hxx> @@ -2174,11 +2173,10 @@ uno::Sequence< uno::Type > SAL_CALL OStorage::getTypes() return m_pData->m_pTypeCollection->getTypes() ; } -namespace { struct lcl_ImplId : public rtl::Static< ::cppu::OImplementationId, lcl_ImplId > {}; } - uno::Sequence< sal_Int8 > SAL_CALL OStorage::getImplementationId() { - return css::uno::Sequence<sal_Int8>(); + static ::cppu::OImplementationId lcl_ImplId; + return lcl_ImplId.getImplementationId(); } // XStorage diff --git a/package/source/zippackage/ZipPackageFolder.cxx b/package/source/zippackage/ZipPackageFolder.cxx index 3e1deee05592..f3099c5b31f3 100644 --- a/package/source/zippackage/ZipPackageFolder.cxx +++ b/package/source/zippackage/ZipPackageFolder.cxx @@ -36,7 +36,6 @@ #include <rtl/digest.h> #include <com/sun/star/beans/PropertyValue.hpp> #include <EncryptedDataHeader.hxx> -#include <rtl/instance.hxx> using namespace com::sun::star; using namespace com::sun::star::packages::zip::ZipConstants; @@ -54,8 +53,6 @@ using namespace cppu; #define THROW_WHERE "" #endif -namespace { struct lcl_CachedImplId : public rtl::Static< cppu::OImplementationId, lcl_CachedImplId > {}; } - ZipPackageFolder::ZipPackageFolder( const css::uno::Reference < css::uno::XComponentContext >& xContext, sal_Int32 nFormat, bool bAllowRemoveOnInsert ) @@ -153,7 +150,8 @@ void ZipPackageFolder::setChildStreamsTypeByExtension( const beans::StringPair& css::uno::Sequence < sal_Int8 > ZipPackageFolder::getUnoTunnelId() { - return lcl_CachedImplId::get().getImplementationId(); + static cppu::OImplementationId lcl_CachedImplId; + return lcl_CachedImplId.getImplementationId(); } // XNameContainer diff --git a/package/source/zippackage/ZipPackageStream.cxx b/package/source/zippackage/ZipPackageStream.cxx index 19cc550a3e85..2077e2f9a77a 100644 --- a/package/source/zippackage/ZipPackageStream.cxx +++ b/package/source/zippackage/ZipPackageStream.cxx @@ -52,7 +52,6 @@ #include <cppuhelper/supportsservice.hxx> #include <cppuhelper/typeprovider.hxx> -#include <rtl/instance.hxx> #include <rtl/random.h> #include <sal/log.hxx> #include <tools/diagnose_ex.h> @@ -75,11 +74,10 @@ using namespace cppu; #define THROW_WHERE "" #endif -namespace { struct lcl_CachedImplId : public rtl::Static< cppu::OImplementationId, lcl_CachedImplId > {}; } - css::uno::Sequence < sal_Int8 > ZipPackageStream::getUnoTunnelId() { - return lcl_CachedImplId::get().getImplementationId(); + static cppu::OImplementationId lcl_CachedImplId; + return lcl_CachedImplId.getImplementationId(); } ZipPackageStream::ZipPackageStream ( ZipPackage & rNewPackage, diff --git a/sal/rtl/bootstrap.cxx b/sal/rtl/bootstrap.cxx index afb80dcd66cb..52ee7f38d24d 100644 --- a/sal/rtl/bootstrap.cxx +++ b/sal/rtl/bootstrap.cxx @@ -146,8 +146,7 @@ static bool find( namespace { - struct rtl_bootstrap_set_vector : - public rtl::Static< NameValueVector, rtl_bootstrap_set_vector > {}; + NameValueVector rtl_bootstrap_set_vector; } static bool getFromCommandLineArgs( @@ -551,7 +550,7 @@ bool Bootstrap_Impl::getAmbienceValue( { osl::MutexGuard g(osl::Mutex::getGlobalMutex()); - f = find(rtl_bootstrap_set_vector::get(), key, &v); + f = find(rtl_bootstrap_set_vector, key, &v); } if (f || getFromCommandLineArgs(key, &v) || @@ -744,8 +743,7 @@ void SAL_CALL rtl_bootstrap_set ( osl::MutexGuard guard(osl::Mutex::getGlobalMutex()); - NameValueVector& r_rtl_bootstrap_set_vector= rtl_bootstrap_set_vector::get(); - for (auto & item : r_rtl_bootstrap_set_vector) + for (auto & item : rtl_bootstrap_set_vector) { if (item.sName == name) { @@ -756,7 +754,7 @@ void SAL_CALL rtl_bootstrap_set ( SAL_INFO("sal.bootstrap", "explicitly getting: name=" << name << " value=" <<value); - r_rtl_bootstrap_set_vector.emplace_back(name, value); + rtl_bootstrap_set_vector.emplace_back(name, value); } void SAL_CALL rtl_bootstrap_expandMacros_from_handle( diff --git a/sal/rtl/rtl_process.cxx b/sal/rtl/rtl_process.cxx index 42c24e80074d..76963dc1376b 100644 --- a/sal/rtl/rtl_process.cxx +++ b/sal/rtl/rtl_process.cxx @@ -21,7 +21,6 @@ #include <cstring> -#include <rtl/instance.hxx> #include <rtl/process.h> #include <rtl/uuid.h> #include <sal/types.h> @@ -46,13 +45,12 @@ private: sal_uInt8 uuid_[UUID_SIZE]; }; -struct theId: public rtl::Static< Id, theId > {}; - } // end namespace void rtl_getGlobalProcessId(sal_uInt8 * pTargetUUID) { - theId::get().copy(pTargetUUID); + static Id theId; + theId.copy(pTargetUUID); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sal/textenc/textenc.cxx b/sal/textenc/textenc.cxx index b0856f9add1c..1d7279f849a4 100644 --- a/sal/textenc/textenc.cxx +++ b/sal/textenc/textenc.cxx @@ -27,7 +27,6 @@ #include <cstdlib> #include <osl/module.hxx> -#include <rtl/instance.hxx> #include <rtl/textenc.h> #include <rtl/ustring.h> #include <rtl/ustring.hxx> @@ -409,10 +408,6 @@ private: #endif -struct FullTextEncodingDataSingleton: - public rtl::Static< FullTextEncodingData, FullTextEncodingDataSingleton > -{}; - } ImplTextEncodingData const * @@ -431,7 +426,10 @@ Impl_getTextEncodingData(rtl_TextEncoding nEncoding) case RTL_TEXTENCODING_ISO_8859_1: return &aImplISO88591TextEncodingData; break; default: - return FullTextEncodingDataSingleton::get().get(nEncoding); + { + static FullTextEncodingData gFullTextEncodingData; + return gFullTextEncodingData.get(nEncoding); + } } } diff --git a/sc/source/core/tool/formulaparserpool.cxx b/sc/source/core/tool/formulaparserpool.cxx index 5e50ea96ec4d..94c47fa903e8 100644 --- a/sc/source/core/tool/formulaparserpool.cxx +++ b/sc/source/core/tool/formulaparserpool.cxx @@ -23,7 +23,6 @@ #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XSingleComponentFactory.hpp> #include <com/sun/star/sheet/XFilterFormulaParser.hpp> -#include <rtl/instance.hxx> #include <comphelper/processfactory.hxx> #include <sfx2/objsh.hxx> #include <document.hxx> @@ -101,8 +100,6 @@ Reference< XFormulaParser > ScParserFactoryMap::createFormulaParser( return xParser; } -struct ScParserFactorySingleton : public ::rtl::Static< ScParserFactoryMap, ScParserFactorySingleton > {}; - } // namespace ScFormulaParserPool::ScFormulaParserPool( const ScDocument& rDoc ) : @@ -132,9 +129,10 @@ Reference< XFormulaParser > ScFormulaParserPool::getFormulaParser( const OUStrin // try to create a new parser object if( SfxObjectShell* pDocShell = mrDoc.GetDocumentShell() ) try { + static ScParserFactoryMap theScParserFactoryMap; + Reference< XComponent > xComponent( pDocShell->GetModel(), UNO_QUERY_THROW ); - ScParserFactoryMap& rFactoryMap = ScParserFactorySingleton::get(); - rxParser = rFactoryMap.createFormulaParser( xComponent, rNamespace ); + rxParser = theScParserFactoryMap.createFormulaParser( xComponent, rNamespace ); } catch( Exception& ) { |