Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/src/catch2
diff options
context:
space:
mode:
authorMartin Hořeňovský2023-02-20 00:12:54 +0100
committerMartin Hořeňovský2023-02-20 14:32:46 +0100
commitfed143624660419a55b114138e51f86f717f21dd (patch)
treeea9a1f07522fa5ec62ab8d34f82527651970eb1e /src/catch2
parent0477326ad908d1c96dd3118b54fccc95e5628ef8 (diff)
downloadcatch3-fed143624660419a55b114138e51f86f717f21dd.tar.gz
Avoid allocating trimmed name for SectionTracker
Diffstat (limited to 'src/catch2')
-rw-r--r--src/catch2/internal/catch_test_case_tracker.cpp2
-rw-r--r--src/catch2/internal/catch_test_case_tracker.hpp6
2 files changed, 6 insertions, 2 deletions
diff --git a/src/catch2/internal/catch_test_case_tracker.cpp b/src/catch2/internal/catch_test_case_tracker.cpp
index dfea71e2..4bee49d6 100644
--- a/src/catch2/internal/catch_test_case_tracker.cpp
+++ b/src/catch2/internal/catch_test_case_tracker.cpp
@@ -163,7 +163,7 @@ namespace TestCaseTracking {
SectionTracker::SectionTracker( NameAndLocation&& nameAndLocation, TrackerContext& ctx, ITracker* parent )
: TrackerBase( CATCH_MOVE(nameAndLocation), ctx, parent ),
- m_trimmed_name(trim(ITracker::nameAndLocation().name))
+ m_trimmed_name(trim(StringRef(ITracker::nameAndLocation().name)))
{
if( parent ) {
while ( !parent->isSectionTracker() ) {
diff --git a/src/catch2/internal/catch_test_case_tracker.hpp b/src/catch2/internal/catch_test_case_tracker.hpp
index 16c525b8..148719e3 100644
--- a/src/catch2/internal/catch_test_case_tracker.hpp
+++ b/src/catch2/internal/catch_test_case_tracker.hpp
@@ -195,7 +195,11 @@ namespace TestCaseTracking {
class SectionTracker : public TrackerBase {
std::vector<StringRef> m_filters;
- std::string m_trimmed_name;
+ // Note that lifetime-wise we piggy back off the name stored in the `ITracker` parent`.
+ // Currently it allocates owns the name, so this is safe. If it is later refactored
+ // to not own the name, the name still has to outlive the `ITracker` parent, so
+ // this should still be safe.
+ StringRef m_trimmed_name;
public:
SectionTracker( NameAndLocation&& nameAndLocation, TrackerContext& ctx, ITracker* parent );