From 689e8b3c0a79ea87959d528baebd01fe1d1bf014 Mon Sep 17 00:00:00 2001 From: Pekka Paalanen Date: Tue, 15 Jun 2021 16:41:48 +0300 Subject: [PATCH] tests: destroy client in pointer-test Fixes all the leaks reported by ASan in this test. The manual pointer release in pointer_timestamps_stop_after_client_releases_wl_pointer is slightly awkward as we need to open-code a part of input_destroy() to avoid double-freeing pointer->wl_pointer. Signed-off-by: Pekka Paalanen --- tests/pointer-test.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/pointer-test.c b/tests/pointer-test.c index 5d618c2e..2e999ab5 100644 --- a/tests/pointer-test.c +++ b/tests/pointer-test.c @@ -156,6 +156,8 @@ TEST(test_pointer_top_left) x -= 1; y -= 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_bottom_left) @@ -181,6 +183,8 @@ TEST(test_pointer_bottom_left) x -= 1; y += 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_top_right) @@ -206,6 +210,8 @@ TEST(test_pointer_top_right) x += 1; y -= 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_bottom_right) @@ -231,6 +237,8 @@ TEST(test_pointer_bottom_right) x += 1; y += 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_top_center) @@ -256,6 +264,8 @@ TEST(test_pointer_top_center) y -= 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_bottom_center) @@ -281,6 +291,8 @@ TEST(test_pointer_bottom_center) y += 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_left_center) @@ -306,6 +318,8 @@ TEST(test_pointer_left_center) x -= 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_right_center) @@ -331,6 +345,8 @@ TEST(test_pointer_right_center) x += 1; assert(!surface_contains(client->surface, x, y)); check_pointer_move(client, x, y); + + client_destroy(client); } TEST(test_pointer_surface_move) @@ -348,6 +364,8 @@ TEST(test_pointer_surface_move) move_client(client, 0, 0); assert(surface_contains(client->surface, 50, 50)); check_pointer(client, 50, 50); + + client_destroy(client); } TEST(pointer_motion_events) @@ -365,6 +383,8 @@ TEST(pointer_motion_events) assert(timespec_eq(&pointer->motion_time_timespec, &t1)); input_timestamps_destroy(input_ts); + + client_destroy(client); } TEST(pointer_button_events) @@ -391,6 +411,8 @@ TEST(pointer_button_events) assert(timespec_eq(&pointer->button_time_timespec, &t2)); input_timestamps_destroy(input_ts); + + client_destroy(client); } TEST(pointer_axis_events) @@ -413,6 +435,8 @@ TEST(pointer_axis_events) assert(timespec_eq(&pointer->axis_stop_time_timespec, &t2)); input_timestamps_destroy(input_ts); + + client_destroy(client); } TEST(pointer_timestamps_stop_after_input_timestamps_object_is_destroyed) @@ -436,6 +460,8 @@ TEST(pointer_timestamps_stop_after_input_timestamps_object_is_destroyed) assert(pointer->state == WL_POINTER_BUTTON_STATE_RELEASED); assert(pointer->button_time_msec == timespec_to_msec(&t2)); assert(timespec_is_zero(&pointer->button_time_timespec)); + + client_destroy(client); } TEST(pointer_timestamps_stop_after_client_releases_wl_pointer) @@ -464,4 +490,8 @@ TEST(pointer_timestamps_stop_after_client_releases_wl_pointer) assert(timespec_eq(&pointer->input_timestamp, &t_other)); input_timestamps_destroy(input_ts); + + free(client->input->pointer); + client->input->pointer = NULL; + client_destroy(client); }