mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-10-31 12:17:11 +01:00 
			
		
		
		
	Moved leak detector to its own file
This commit is contained in:
		| @@ -147,6 +147,7 @@ set(INTERNAL_HEADERS | ||||
|         ${HEADER_DIR}/internal/catch_interfaces_runner.h | ||||
|         ${HEADER_DIR}/internal/catch_interfaces_tag_alias_registry.h | ||||
|         ${HEADER_DIR}/internal/catch_interfaces_testcase.h | ||||
|         ${HEADER_DIR}/internal/catch_leak_detector.h | ||||
|         ${HEADER_DIR}/internal/catch_list.h | ||||
|         ${HEADER_DIR}/internal/catch_matchers.hpp | ||||
|         ${HEADER_DIR}/internal/catch_matchers_string.h | ||||
| @@ -202,6 +203,7 @@ set(IMPL_SOURCES | ||||
|         ${HEADER_DIR}/internal/catch_exception_translator_registry.cpp | ||||
|         ${HEADER_DIR}/internal/catch_fatal_condition.cpp | ||||
|         ${HEADER_DIR}/internal/catch_list.cpp | ||||
|         ${HEADER_DIR}/internal/catch_leak_detector.cpp | ||||
|         ${HEADER_DIR}/internal/catch_matchers_string.cpp | ||||
|         ${HEADER_DIR}/internal/catch_message.cpp | ||||
|         ${HEADER_DIR}/internal/catch_notimplemented_exception.cpp | ||||
|   | ||||
| @@ -50,29 +50,6 @@ | ||||
| #endif | ||||
|  | ||||
| #ifdef CATCH_IMPL | ||||
|  | ||||
| // !TBD: Move the leak detector code into a separate header | ||||
| #ifdef CATCH_CONFIG_WINDOWS_CRTDBG | ||||
| #include <crtdbg.h> | ||||
| class LeakDetector { | ||||
| public: | ||||
| 	LeakDetector() { | ||||
| 		int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); | ||||
| 		flag |= _CRTDBG_LEAK_CHECK_DF; | ||||
| 		flag |= _CRTDBG_ALLOC_MEM_DF; | ||||
| 		_CrtSetDbgFlag(flag); | ||||
| 		_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); | ||||
| 		_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); | ||||
| 		// Change this to leaking allocation's number to break there | ||||
| 		_CrtSetBreakAlloc(-1); | ||||
| 	} | ||||
| }; | ||||
| #else | ||||
| class LeakDetector {}; | ||||
| #endif | ||||
|  | ||||
| LeakDetector leakDetector; | ||||
|  | ||||
| #include "internal/catch_impl.hpp" | ||||
| #endif | ||||
|  | ||||
|   | ||||
| @@ -21,6 +21,8 @@ | ||||
| #include "catch_reporter_registrars.hpp" | ||||
| // | ||||
|  | ||||
| #include "internal/catch_leak_detector.h" | ||||
|  | ||||
|  | ||||
| #include "../catch_session.hpp" | ||||
| #include "catch_stream.hpp" | ||||
| @@ -31,6 +33,8 @@ | ||||
| // ~*~* CATCH_CPP_STITCH_PLACE *~*~ | ||||
|  | ||||
| namespace Catch { | ||||
|     LeakDetector leakDetector; | ||||
|  | ||||
|     // These are all here to avoid warnings about not having any out of line | ||||
|     // virtual methods | ||||
|     NonCopyable::~NonCopyable() {} | ||||
|   | ||||
							
								
								
									
										33
									
								
								include/internal/catch_leak_detector.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								include/internal/catch_leak_detector.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| /* | ||||
|  *  Created by Martin on 12/07/2017. | ||||
|  * | ||||
|  *  Distributed under the Boost Software License, Version 1.0. (See accompanying | ||||
|  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
|  */ | ||||
|  | ||||
|  #include "catch_leak_detector.h" | ||||
|  | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
| #ifdef CATCH_CONFIG_WINDOWS_CRTDBG | ||||
| #include <crtdbg.h> | ||||
|  | ||||
| 	LeakDetector::LeakDetector() { | ||||
| 		int flag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); | ||||
| 		flag |= _CRTDBG_LEAK_CHECK_DF; | ||||
| 		flag |= _CRTDBG_ALLOC_MEM_DF; | ||||
| 		_CrtSetDbgFlag(flag); | ||||
| 		_CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE | _CRTDBG_MODE_DEBUG); | ||||
| 		_CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR); | ||||
| 		// Change this to leaking allocation's number to break there | ||||
| 		_CrtSetBreakAlloc(-1); | ||||
| 	} | ||||
|  | ||||
| #else | ||||
|  | ||||
|     LeakDetector::LeakDetector(){} | ||||
|  | ||||
| #endif | ||||
|  | ||||
| } | ||||
							
								
								
									
										17
									
								
								include/internal/catch_leak_detector.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								include/internal/catch_leak_detector.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| /* | ||||
|  *  Created by Martin on 12/07/2017. | ||||
|  * | ||||
|  *  Distributed under the Boost Software License, Version 1.0. (See accompanying | ||||
|  *  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||||
|  */ | ||||
| #ifndef TWOBLUECUBES_CATCH_LEAK_DETECTOR_H_INCLUDED | ||||
| #define TWOBLUECUBES_CATCH_LEAK_DETECTOR_H_INCLUDED | ||||
|  | ||||
| namespace Catch { | ||||
|  | ||||
|     struct LeakDetector { | ||||
|         LeakDetector(); | ||||
|     }; | ||||
|  | ||||
| } | ||||
| #endif // TWOBLUECUBES_CATCH_LEAK_DETECTOR_H_INCLUDED | ||||
		Reference in New Issue
	
	Block a user
	 Martin Hořeňovský
					Martin Hořeňovský