mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 20:27:11 +01:00 
			
		
		
		
	fix SEGFAULTs
issue was that mutable context had no config thus trying to get stream caused SEGFAULT Closes #1533, #1534
This commit is contained in:
		| @@ -12,6 +12,7 @@ | |||||||
| #include "catch_interfaces_reporter.h" | #include "catch_interfaces_reporter.h" | ||||||
| #include "catch_interfaces_testcase.h" | #include "catch_interfaces_testcase.h" | ||||||
|  |  | ||||||
|  | #include "catch_context.h" | ||||||
| #include "catch_stream.h" | #include "catch_stream.h" | ||||||
| #include "catch_text.h" | #include "catch_text.h" | ||||||
|  |  | ||||||
| @@ -146,15 +147,16 @@ namespace Catch { | |||||||
|         return factories.size(); |         return factories.size(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     Option<std::size_t> list( Config const& config ) { |     Option<std::size_t> list( std::shared_ptr<Config> const& config ) { | ||||||
|         Option<std::size_t> listedCount; |         Option<std::size_t> listedCount; | ||||||
|         if( config.listTests() ) |         getCurrentMutableContext().setConfig( config ); | ||||||
|             listedCount = listedCount.valueOr(0) + listTests( config ); |         if( config->listTests() ) | ||||||
|         if( config.listTestNamesOnly() ) |             listedCount = listedCount.valueOr(0) + listTests( *config ); | ||||||
|             listedCount = listedCount.valueOr(0) + listTestsNamesOnly( config ); |         if( config->listTestNamesOnly() ) | ||||||
|         if( config.listTags() ) |             listedCount = listedCount.valueOr(0) + listTestsNamesOnly( *config ); | ||||||
|             listedCount = listedCount.valueOr(0) + listTags( config ); |         if( config->listTags() ) | ||||||
|         if( config.listReporters() ) |             listedCount = listedCount.valueOr(0) + listTags( *config ); | ||||||
|  |         if( config->listReporters() ) | ||||||
|             listedCount = listedCount.valueOr(0) + listReporters(); |             listedCount = listedCount.valueOr(0) + listReporters(); | ||||||
|         return listedCount; |         return listedCount; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -31,7 +31,7 @@ namespace Catch { | |||||||
|  |  | ||||||
|     std::size_t listReporters(); |     std::size_t listReporters(); | ||||||
|      |      | ||||||
|     Option<std::size_t> list( Config const& config ); |     Option<std::size_t> list( std::shared_ptr<Config> const& config ); | ||||||
|  |  | ||||||
| } // end namespace Catch | } // end namespace Catch | ||||||
|  |  | ||||||
|   | |||||||
| @@ -10,6 +10,7 @@ | |||||||
| #include "catch_console_colour.h" | #include "catch_console_colour.h" | ||||||
| #include "catch_enforce.h" | #include "catch_enforce.h" | ||||||
| #include "catch_list.h" | #include "catch_list.h" | ||||||
|  | #include "catch_context.h" | ||||||
| #include "catch_run_context.h" | #include "catch_run_context.h" | ||||||
| #include "catch_stream.h" | #include "catch_stream.h" | ||||||
| #include "catch_test_spec.h" | #include "catch_test_spec.h" | ||||||
| @@ -170,6 +171,8 @@ namespace Catch { | |||||||
|             return 1; |             return 1; | ||||||
|  |  | ||||||
|         auto result = m_cli.parse( clara::Args( argc, argv ) ); |         auto result = m_cli.parse( clara::Args( argc, argv ) ); | ||||||
|  |         config(); | ||||||
|  |         getCurrentMutableContext().setConfig( m_config ); | ||||||
|         if( !result ) { |         if( !result ) { | ||||||
|             Catch::cerr() |             Catch::cerr() | ||||||
|                 << Colour( Colour::Red ) |                 << Colour( Colour::Red ) | ||||||
| @@ -262,7 +265,7 @@ namespace Catch { | |||||||
|                 applyFilenamesAsTags( *m_config ); |                 applyFilenamesAsTags( *m_config ); | ||||||
|  |  | ||||||
|             // Handle list request |             // Handle list request | ||||||
|             if( Option<std::size_t> listed = list( config() ) ) |             if( Option<std::size_t> listed = list( m_config ) ) | ||||||
|                 return static_cast<int>( *listed ); |                 return static_cast<int>( *listed ); | ||||||
|  |  | ||||||
|             auto totals = runTests( m_config ); |             auto totals = runTests( m_config ); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jozef Grajciar
					Jozef Grajciar