sfx2/source/doc/sfxbasemodel.cxx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
New commits: commit 5995f21774754d306ead2763e1bf4ef357f5a23b Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Fri May 31 12:56:37 2024 +0200 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Fri May 31 20:13:07 2024 +0200 Avoid race There are reports that RuntimeUID may be some unexpected value like 1206137128392, in unclear cases. This is a blind shot at that. Change-Id: I724f082c361243beb4bd2ac14edf3176259f15d3 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168209 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> diff --git a/sfx2/source/doc/sfxbasemodel.cxx b/sfx2/source/doc/sfxbasemodel.cxx index cd00bff1a4f7..d52c3cbe7a86 100644 --- a/sfx2/source/doc/sfxbasemodel.cxx +++ b/sfx2/source/doc/sfxbasemodel.cxx @@ -198,7 +198,7 @@ void SAL_CALL SfxDocInfoListener_Impl::disposing( const lang::EventObject& ) struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument { // counter for SfxBaseModel instances created. - static sal_Int64 g_nInstanceCounter ; + inline static std::atomic<sal_Int64> g_nInstanceCounter = 0 ; SfxObjectShellRef m_pObjectShell ; OUString m_sURL ; OUString m_sRuntimeUID ; @@ -256,10 +256,8 @@ struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument , m_bExternalTitle ( false ) , m_bDisposing ( false ) { - // increase global instance counter. - ++g_nInstanceCounter; - // set own Runtime UID - m_sRuntimeUID = OUString::number( g_nInstanceCounter ); + // increase global instance counter, and set own Runtime UID + m_sRuntimeUID = OUString::number(++g_nInstanceCounter); } virtual ~IMPL_SfxBaseModel_DataContainer() @@ -340,9 +338,6 @@ struct IMPL_SfxBaseModel_DataContainer : public ::sfx2::IModifiableDocument } }; -// static member initialization. -sal_Int64 IMPL_SfxBaseModel_DataContainer::g_nInstanceCounter = 0; - namespace { // Listener that forwards notifications from the PrintHelper to the "real" listeners