diff options
| author | Martin Hořeňovský | 2023-02-20 00:12:54 +0100 |
|---|---|---|
| committer | Martin Hořeňovský | 2023-02-20 14:32:46 +0100 |
| commit | fed143624660419a55b114138e51f86f717f21dd (patch) | |
| tree | ea9a1f07522fa5ec62ab8d34f82527651970eb1e /src | |
| parent | 0477326ad908d1c96dd3118b54fccc95e5628ef8 (diff) | |
| download | catch3-fed143624660419a55b114138e51f86f717f21dd.tar.gz | |
Avoid allocating trimmed name for SectionTracker
Diffstat (limited to 'src')
| -rw-r--r-- | src/catch2/internal/catch_test_case_tracker.cpp | 2 | ||||
| -rw-r--r-- | src/catch2/internal/catch_test_case_tracker.hpp | 6 |
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 ); |