summaryrefslogtreecommitdiff
path: root/glib/tests/mem-overflow.c
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2011-12-13 19:01:42 +0000
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2011-12-14 12:40:16 +0000
commit29f2ced8eb32d9001da8082c4530f017decb8267 (patch)
treefa50e29f09d084c826e0f4d4e41e321123c9547a /glib/tests/mem-overflow.c
parenta0f5e89aedd0fcd04164c35b1c77d194adfc698a (diff)
downloadglib-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.c23
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