From e118c111783f89635986fecdd7990ce7dcb1363b Mon Sep 17 00:00:00 2001 From: Marek Chalupa Date: Fri, 21 Nov 2014 11:18:33 +0100 Subject: [PATCH] tests: fix memory leak We didn't free the struct client that we got from client_connect() Signed-off-by: Marek Chalupa Acked-by: Pekka Paalanen --- tests/display-test.c | 23 +++++++++++++---------- tests/test-compositor.c | 1 + 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/tests/display-test.c b/tests/display-test.c index d5f4d00..f9889a8 100644 --- a/tests/display-test.c +++ b/tests/display-test.c @@ -155,6 +155,14 @@ bind_seat(struct wl_client *client, void *data, } static void +client_disconnect_nocheck(struct client *c) +{ + wl_proxy_destroy((struct wl_proxy *) c->tc); + wl_display_disconnect(c->wl_display); + free(c); +} + +static void post_error_main(void) { struct client *c = client_connect(); @@ -170,8 +178,7 @@ post_error_main(void) /* don't call client_disconnect(c), because then the test would be * aborted due to checks for error in this function */ wl_proxy_destroy((struct wl_proxy *) seat); - wl_proxy_destroy((struct wl_proxy *) c->tc); - wl_display_disconnect(c->wl_display); + client_disconnect_nocheck(c); } TEST(post_error_to_one_client) @@ -224,8 +231,7 @@ post_error_main3(void) /* don't call client_disconnect(c), because then the test would be * aborted due to checks for error in this function */ wl_proxy_destroy((struct wl_proxy *) seat); - wl_proxy_destroy((struct wl_proxy *) c->tc); - wl_display_disconnect(c->wl_display); + client_disconnect_nocheck(c); } /* all the testcases could be in one TEST, but splitting it @@ -294,8 +300,7 @@ post_nomem_main(void) assert(wl_display_get_error(c->wl_display) == ENOMEM); wl_proxy_destroy((struct wl_proxy *) seat); - wl_proxy_destroy((struct wl_proxy *) c->tc); - wl_display_disconnect(c->wl_display); + client_disconnect_nocheck(c); } TEST(post_nomem_tst) @@ -413,8 +418,7 @@ threading_post_err(void) test_set_timeout(3); pthread_join(thread, NULL); - wl_proxy_destroy((struct wl_proxy *) c->tc); - wl_display_disconnect(c->wl_display); + client_disconnect_nocheck(c); } TEST(threading_errors_tst) @@ -565,8 +569,7 @@ threading_read_after_error(void) test_set_timeout(3); pthread_join(thread, NULL); - wl_proxy_destroy((struct wl_proxy *) c->tc); - wl_display_disconnect(c->wl_display); + client_disconnect_nocheck(c); } TEST(threading_read_after_error_tst) diff --git a/tests/test-compositor.c b/tests/test-compositor.c index 3248e2d..6f86a85 100644 --- a/tests/test-compositor.c +++ b/tests/test-compositor.c @@ -452,6 +452,7 @@ client_disconnect(struct client *c) wl_proxy_destroy((struct wl_proxy *) c->tc); wl_display_disconnect(c->wl_display); + free(c); } /* num is number of clients that requests to stop display. -- 2.7.4