From 1b64158c7ab6ae4028e63bbd77756bc732146adb Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 15 Feb 2024 08:21:07 +0100 Subject: [PATCH] Nanotrace: Make category uncopyable Leads to subtle bugs. Task-number: QDS-11952 Change-Id: I022af297e89a08d9ed98cee6b76c6e2114043987 Reviewed-by: Tim Jenssen --- src/libs/nanotrace/nanotracehr.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/libs/nanotrace/nanotracehr.h b/src/libs/nanotrace/nanotracehr.h index 3241d3ded81..5f3daa5496f 100644 --- a/src/libs/nanotrace/nanotracehr.h +++ b/src/libs/nanotrace/nanotracehr.h @@ -657,7 +657,7 @@ public: std::size_t bindId = 0; if (m_id) { - auto category = m_category(); + auto &category = m_category(); bindId = category.createBindId(); category.begin('b', m_id, name, bindId, IsFlow::Out, std::forward(arguments)...); } @@ -954,12 +954,12 @@ public: std::size_t bindId = 0; if (m_id) { - auto category = m_category(); + auto &category = m_category(); bindId = category.createBindId(); category.tick('n', m_id, name, bindId, IsFlow::Out, std::forward(arguments)...); } - return {std::move(name), bindId, m_category}; + return {PrivateTag{}, std::move(name), bindId, m_category}; } template @@ -1072,9 +1072,9 @@ public: std::size_t id = 0; if (m_bindId) { - auto category = m_category(); + auto &category = m_category(); id = category.createId(); - category->begin('b', id, name, m_bindId, IsFlow::In, std::forward(arguments)...); + category.begin('b', id, name, m_bindId, IsFlow::In, std::forward(arguments)...); } return {std::move(name), id, m_category}; @@ -1088,10 +1088,10 @@ public: std::size_t bindId = 0; if (m_bindId) { - auto category = m_category(); + auto &category = m_category(); id = category.createId(); bindId = category.createBindId(); - category->begin('b', id, name, bindId, IsFlow::InOut, std::forward(arguments)...); + category.begin('b', id, name, bindId, IsFlow::InOut, std::forward(arguments)...); } return {std::piecewise_construct, @@ -1232,6 +1232,9 @@ public: m_bindIdCounter = m_globalBindIdCounter += 1ULL << 32; } + Category(const Category &) = delete; + Category &operator=(const Category &) = delete; + template [[nodiscard]] AsynchronousTokenType beginAsynchronous(ArgumentType traceName, Arguments &&...arguments)