Skip to content

Commit 319ff34

Browse files
authored
Merge pull request libgit2#5892 from libgit2/ethomson/memleak
tests: clean up memory leak, fail on leak for win32
2 parents b5dcdad + 1b1e541 commit 319ff34

File tree

4 files changed

+19
-1
lines changed

4 files changed

+19
-1
lines changed

src/win32/w32_leakcheck.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,11 @@ static void git_win32_leakcheck_global_shutdown(void)
558558
git_win32_leakcheck_stack_cleanup();
559559
}
560560

561+
bool git_win32_leakcheck_has_leaks(void)
562+
{
563+
return (g_transient_count_total_leaks > 0);
564+
}
565+
561566
int git_win32_leakcheck_global_init(void)
562567
{
563568
git_win32_leakcheck_stacktrace_init();

src/win32/w32_leakcheck.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ int git_win32_leakcheck_global_init(void);
2121
#include "git2/errors.h"
2222
#include "strnlen.h"
2323

24+
bool git_win32_leakcheck_has_leaks(void);
25+
2426
/* Stack frames (for stack tracing, below) */
2527

2628
/**

tests/main.c

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
#include "clar_libgit2.h"
22
#include "clar_libgit2_trace.h"
33

4+
#ifdef GIT_WIN32_LEAKCHECK
5+
# include "win32/w32_leakcheck.h"
6+
#endif
7+
48
#ifdef _WIN32
59
int __cdecl main(int argc, char *argv[])
610
#else
@@ -29,6 +33,11 @@ int main(int argc, char *argv[])
2933
cl_global_trace_disable();
3034
git_libgit2_shutdown();
3135

36+
#ifdef GIT_WIN32_LEAKCHECK
37+
if (git_win32_leakcheck_has_leaks())
38+
res = res || 1;
39+
#endif
40+
3241
at_exit_cmd = getenv("CLAR_AT_EXIT");
3342
if (at_exit_cmd != NULL) {
3443
int at_exit = system(at_exit_cmd);

tests/refs/races.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,12 @@ void test_refs_races__create_matching_zero_old(void)
3131
git_oid_fromstr(&zero_id, "0000000000000000000000000000000000000000");
3232

3333
cl_git_fail(git_reference_create_matching(&ref, g_repo, refname, &id, 1, &zero_id, NULL));
34+
git_reference_free(ref);
3435

3536
cl_git_pass(git_reference_create_matching(&ref, g_repo, other_refname, &id, 1, &zero_id, NULL));
36-
cl_git_fail(git_reference_create_matching(&ref, g_repo, other_refname, &id, 1, &zero_id, NULL));
37+
git_reference_free(ref);
3738

39+
cl_git_fail(git_reference_create_matching(&ref, g_repo, other_refname, &id, 1, &zero_id, NULL));
3840
git_reference_free(ref);
3941
}
4042

0 commit comments

Comments
 (0)