mirror of
https://github.com/catchorg/Catch2.git
synced 2024-12-23 19:53:28 +01:00
ab98afe68b
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();
|
|
}
|