diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2011-12-13 19:01:42 +0000 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2011-12-14 12:40:16 +0000 |
commit | 29f2ced8eb32d9001da8082c4530f017decb8267 (patch) | |
tree | fa50e29f09d084c826e0f4d4e41e321123c9547a /glib/tests/mem-overflow.c | |
parent | a0f5e89aedd0fcd04164c35b1c77d194adfc698a (diff) | |
download | glib-29f2ced8eb32d9001da8082c4530f017decb8267.tar.gz |
various GLib tests: plug memory leaks
These don't really matter, since it's test code, but they do obscure
real leaks in the library.
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=666115
Acked-by: Matthias Clasen <mclasen@redhat.com>
Diffstat (limited to 'glib/tests/mem-overflow.c')
-rw-r--r-- | glib/tests/mem-overflow.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/glib/tests/mem-overflow.c b/glib/tests/mem-overflow.c index 8649b2450..0d483fb19 100644 --- a/glib/tests/mem-overflow.c +++ b/glib/tests/mem-overflow.c @@ -34,6 +34,7 @@ mem_overflow (void) gpointer p, q; typedef char X[10]; + /* "FAIL" here apparently means "fail to overflow"... */ #define CHECK_PASS(P) p = (P); g_assert (p == NULL); #define CHECK_FAIL(P) p = (P); g_assert (p != NULL); @@ -41,24 +42,28 @@ mem_overflow (void) CHECK_PASS (g_try_malloc_n (a, b)); CHECK_PASS (g_try_malloc_n (b, a)); CHECK_FAIL (g_try_malloc_n (b, b)); + g_free (p); CHECK_PASS (g_try_malloc0_n (a, a)); CHECK_PASS (g_try_malloc0_n (a, b)); CHECK_PASS (g_try_malloc0_n (b, a)); CHECK_FAIL (g_try_malloc0_n (b, b)); + g_free (p); q = g_malloc (1); CHECK_PASS (g_try_realloc_n (q, a, a)); CHECK_PASS (g_try_realloc_n (q, a, b)); CHECK_PASS (g_try_realloc_n (q, b, a)); CHECK_FAIL (g_try_realloc_n (q, b, b)); - free (p); + g_free (p); CHECK_PASS (g_try_new (X, a)); CHECK_FAIL (g_try_new (X, b)); + g_free (p); CHECK_PASS (g_try_new0 (X, a)); CHECK_FAIL (g_try_new0 (X, b)); + g_free (p); q = g_try_malloc (1); CHECK_PASS (g_try_renew (X, q, a)); @@ -69,7 +74,17 @@ mem_overflow (void) #undef CHECK_PASS #define CHECK_FAIL(P) if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) { p = (P); exit (0); } g_test_trap_assert_failed(); -#define CHECK_PASS(P) if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) { p = (P); exit (0); } g_test_trap_assert_passed(); + +#define CHECK_PASS(P) do { \ + if (g_test_trap_fork (0, G_TEST_TRAP_SILENCE_STDERR)) \ + { \ + p = (P); \ + g_free (p); \ + exit (0); \ + } \ + \ + g_test_trap_assert_passed(); \ + } while (0) CHECK_FAIL (g_malloc_n (a, a)); CHECK_FAIL (g_malloc_n (a, b)); @@ -86,7 +101,7 @@ mem_overflow (void) CHECK_FAIL (g_realloc_n (q, a, b)); CHECK_FAIL (g_realloc_n (q, b, a)); CHECK_PASS (g_realloc_n (q, b, b)); - free (q); + g_free (q); CHECK_FAIL (g_new (X, a)); CHECK_PASS (g_new (X, b)); @@ -97,7 +112,7 @@ mem_overflow (void) q = g_malloc (1); CHECK_FAIL (g_renew (X, q, a)); CHECK_PASS (g_renew (X, q, b)); - free (q); + g_free (q); } typedef struct |