comphelper/source/misc/traceevent.cxx | 7 ++++++- include/comphelper/profilezone.hxx | 12 +++++++----- 2 files changed, 13 insertions(+), 6 deletions(-)
New commits: commit 5c84de37ada9f5835bf0a644b0d5b7f7c7dedd2c Author: Gopi Krishna Menon <gopi.me...@collabora.com> AuthorDate: Thu Jul 29 15:21:13 2021 +0530 Commit: Tor Lillqvist <t...@collabora.com> CommitDate: Tue Aug 17 22:26:52 2021 +0200 Fix nesting level bug in ProfileZone Move the profile zone global nesting variable into the source from header and make it thread-local. Change-Id: I97751f5c532d8e0e36adb7d9d383bd88f752953f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119657 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Tor Lillqvist <t...@collabora.com> diff --git a/comphelper/source/misc/traceevent.cxx b/comphelper/source/misc/traceevent.cxx index c379bbb97f7e..8b1a9c09427a 100644 --- a/comphelper/source/misc/traceevent.cxx +++ b/comphelper/source/misc/traceevent.cxx @@ -29,7 +29,8 @@ std::size_t TraceEvent::s_nBufferSize = 0; void (*TraceEvent::s_pBufferFullCallback)() = nullptr; int AsyncEvent::s_nIdCounter = 0; -int ProfileZone::s_nNesting = 0; + +static thread_local int nProfileZoneNesting = 0; // Level of Nested Profile Zones namespace { @@ -134,6 +135,10 @@ void ProfileZone::addRecording() + OUString::number(osl_getThreadIdentifier(nullptr)) + "},"); } +int ProfileZone::getNestingLevel() { return nProfileZoneNesting; } + +void ProfileZone::setNestingLevel(int nNestingLevel) { nProfileZoneNesting = nNestingLevel; } + } // namespace comphelper /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/comphelper/profilezone.hxx b/include/comphelper/profilezone.hxx index 43c792e0fcf7..ec2a5a41d34a 100644 --- a/include/comphelper/profilezone.hxx +++ b/include/comphelper/profilezone.hxx @@ -23,13 +23,14 @@ namespace comphelper class COMPHELPER_DLLPUBLIC ProfileZone : public NamedEvent { - static int s_nNesting; // level of nested zones. - long long m_nCreateTime; int m_nNesting; void addRecording(); + static void setNestingLevel(int nNestingLevel); + static int getNestingLevel(); + ProfileZone(const char* sName, const OUString &sArgs) : NamedEvent(sName, sArgs) , m_nNesting(-1) @@ -38,7 +39,8 @@ class COMPHELPER_DLLPUBLIC ProfileZone : public NamedEvent { m_nCreateTime = getNow(); - m_nNesting = s_nNesting++; + m_nNesting = getNestingLevel(); + setNestingLevel(getNestingLevel() + 1); } else m_nCreateTime = 0; @@ -63,9 +65,9 @@ class COMPHELPER_DLLPUBLIC ProfileZone : public NamedEvent { if (m_nCreateTime > 0) { - s_nNesting--; + setNestingLevel(getNestingLevel() - 1); - if (m_nNesting != s_nNesting) + if (m_nNesting != getNestingLevel()) { SAL_WARN("comphelper.traceevent", "Incorrect ProfileZone nesting for " << m_sName); }