mirror of
				https://github.com/catchorg/Catch2.git
				synced 2025-11-04 09:01:50 +01:00 
			
		
		
		
	simple code with provided main function which just returns 0 leaks memory due to fact that singletons are not cleaned up running valgrind on such simple application reports that 752 bytes are still available in 11 blocks this commit adds destructor to Catch::LeakDetector which calls Catch::cleanUp()
		
			
				
	
	
		
			38 lines
		
	
	
		
			924 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			924 B
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 *  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"
 | 
						|
 #include "catch_interfaces_registry_hub.h"
 | 
						|
 | 
						|
 | 
						|
#ifdef CATCH_CONFIG_WINDOWS_CRTDBG
 | 
						|
#include <crtdbg.h>
 | 
						|
 | 
						|
namespace Catch {
 | 
						|
 | 
						|
    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
 | 
						|
 | 
						|
    Catch::LeakDetector::LeakDetector() {}
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
Catch::LeakDetector::~LeakDetector() {
 | 
						|
    Catch::cleanUp();
 | 
						|
}
 |