mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	Fix StringRef self-assignment after substring
Thanks to Alex Tkachenko for spotting it.
This commit is contained in:
		| @@ -71,10 +71,12 @@ namespace Catch { | ||||
|         } | ||||
|  | ||||
|         auto operator = ( StringRef const &other ) noexcept -> StringRef& { | ||||
|             delete[] m_data; | ||||
|             m_data = nullptr; | ||||
|             m_start = other.m_start; | ||||
|             m_size = other.m_size; | ||||
|             if( this != &other ) { | ||||
|                 delete[] m_data; | ||||
|                 m_data = nullptr; | ||||
|                 m_start = other.m_start; | ||||
|                 m_size = other.m_size; | ||||
|             } | ||||
|             return *this; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -92,6 +92,11 @@ TEST_CASE( "StringRef", "[Strings][StringRef]" ) { | ||||
|             REQUIRE( isOwned( ss ) ); | ||||
|  | ||||
|             REQUIRE( ss.currentData() != s.currentData() ); // different pointer value | ||||
|  | ||||
|             SECTION( "Self-assignment after substring" ) { | ||||
|                 ss = ss; | ||||
|                 REQUIRE(isOwned(ss) == true); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         SECTION( "non-zero-based substring") { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Phil Nash
					Phil Nash