summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2021-04-29 11:07:18 +0300
committerTor Lillqvist <tml@collabora.com>2021-04-29 12:41:24 +0200
commit481df1125871de9cb1ce1a38b459b9710a56324b (patch)
tree3c8e268fb876e0b6fc14f30df72a5c12a5f53a1b
parent096c9598d7f9dba153eb997db57c54c8c33d1823 (diff)
Add SAL_WARN in case ProfileZones are overlapping and not hierarchical
Change-Id: Id09904db762b6d931ab23cce16e55d5213079516 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114843 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Tor Lillqvist <tml@collabora.com>
-rw-r--r--comphelper/qa/unit/test_traceevent.cxx7
-rw-r--r--include/comphelper/profilezone.hxx14
-rw-r--r--include/sal/log-areas.dox1
3 files changed, 19 insertions, 3 deletions
diff --git a/comphelper/qa/unit/test_traceevent.cxx b/comphelper/qa/unit/test_traceevent.cxx
index e170e8aaeb18..29094b14f01b 100644
--- a/comphelper/qa/unit/test_traceevent.cxx
+++ b/comphelper/qa/unit/test_traceevent.cxx
@@ -122,6 +122,13 @@ void trace_event_test()
// object that has already had its 'e' event generated.
}
+ // This incorrect use of overlapping (not nested) ProfileZones
+ // will generate a SAL_WARN but should not crash
+ auto p1 = new comphelper::ProfileZone("error1");
+ auto p2 = new comphelper::ProfileZone("error2");
+ delete p1;
+ delete p2;
+
// Nothing is generated from this
pAsync7Locked.reset();
}
diff --git a/include/comphelper/profilezone.hxx b/include/comphelper/profilezone.hxx
index 953ef09e0bc8..127e42d4daa3 100644
--- a/include/comphelper/profilezone.hxx
+++ b/include/comphelper/profilezone.hxx
@@ -12,6 +12,8 @@
#include <sal/config.h>
+#include <sal/log.hxx>
+
#include <comphelper/traceevent.hxx>
// implementation of XToolkitExperimental profiling API
@@ -70,10 +72,16 @@ class COMPHELPER_DLLPUBLIC ProfileZone : public NamedEvent
if (m_nCreateTime > 0)
{
s_nNesting--;
- assert(m_nNesting == s_nNesting);
- if (s_bRecording)
- addRecording();
+ if (m_nNesting != s_nNesting)
+ {
+ SAL_WARN("comphelper.traceevent", "Incorrect ProfileZone nesting for " << m_sName);
+ }
+ else
+ {
+ if (s_bRecording)
+ addRecording();
+ }
if (m_bConsole)
stopConsole();
diff --git a/include/sal/log-areas.dox b/include/sal/log-areas.dox
index 94733ff414ad..f46f3fa059e2 100644
--- a/include/sal/log-areas.dox
+++ b/include/sal/log-areas.dox
@@ -100,6 +100,7 @@ certain functionality.
@li @c comphelper.container - EmbeddedObjectContainer
@li @c comphelper.crypto
@li @c comphelper.lok
+@li @c comphelper.traceevent
@section cppu