clients/keyboard: free input_panel_surface
Fixes ASan leak: Direct leak of 80 byte(s) in 1 object(s) allocated from: #0 0x7fe7791f4518 in calloc (/lib/x86_64-linux-gnu/libasan.so.5+0xe9518) #1 0x7fe779100892 in zalloc ../../git/wayland/src/wayland-private.h:232 #2 0x7fe779100892 in proxy_create ../../git/wayland/src/wayland-client.c:422 #3 0x7fe779100ede in create_outgoing_proxy ../../git/wayland/src/wayland-client.c:651 #4 0x7fe779100ede in wl_proxy_marshal_array_constructor_versioned ../../git/wayland/src/wayland-client.c:736 #5 0x7fe779101226 in wl_proxy_marshal_constructor ../../git/wayland/src/wayland-client.c:834 #6 0x56428c9bc578 in zwp_input_panel_v1_get_input_panel_surface protocol/input-method-unstable-v1-client-protocol.h:678 #7 0x56428c9c0bbb in set_toplevel ../../git/weston/clients/keyboard.c:965 #8 0x56428c9c0c8d in display_output_handler ../../git/weston/clients/keyboard.c:980 #9 0x56428c9ddead in display_handle_mode ../../git/weston/clients/window.c:5700 #10 0x7fe7786668ed in ffi_call_unix64 (/lib/x86_64-linux-gnu/libffi.so.6+0x68ed) #11 0x7fe7786662be in ffi_call (/lib/x86_64-linux-gnu/libffi.so.6+0x62be) #12 0x7fe779103fac in wl_closure_invoke ../../git/wayland/src/connection.c:1018 #13 0x7fe779100a48 in dispatch_event ../../git/wayland/src/wayland-client.c:1452 #14 0x7fe779101e43 in dispatch_queue ../../git/wayland/src/wayland-client.c:1598 #15 0x7fe779101e43 in wl_display_dispatch_queue_pending ../../git/wayland/src/wayland-client.c:1840 #16 0x56428c9e031c in handle_display_data ../../git/weston/clients/window.c:6211 #17 0x56428c9e2147 in display_run ../../git/weston/clients/window.c:6553 #18 0x56428c9c1559 in main ../../git/weston/clients/keyboard.c:1053 #19 0x7fe77885e09a in __libc_start_main ../csu/libc-start.c:308 #20 0x56428c9bc029 in _start (/home/pq/build/weston-meson/clients/weston-keyboard+0x19029) Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
This commit is contained in:
parent
2af436bb9c
commit
497d03edbf
|
@ -60,6 +60,7 @@ struct virtual_keyboard {
|
|||
uint32_t surrounding_cursor;
|
||||
struct keyboard *keyboard;
|
||||
bool toplevel;
|
||||
struct zwp_input_panel_surface_v1 *ips;
|
||||
};
|
||||
|
||||
enum key_type {
|
||||
|
@ -969,6 +970,7 @@ set_toplevel(struct output *output, struct virtual_keyboard *virtual_keyboard)
|
|||
ZWP_INPUT_PANEL_SURFACE_V1_POSITION_CENTER_BOTTOM);
|
||||
|
||||
virtual_keyboard->toplevel = true;
|
||||
virtual_keyboard->ips = ips;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1014,6 +1016,9 @@ keyboard_create(struct virtual_keyboard *virtual_keyboard)
|
|||
static void
|
||||
keyboard_destroy(struct virtual_keyboard *virtual_keyboard)
|
||||
{
|
||||
if (virtual_keyboard->ips)
|
||||
zwp_input_panel_surface_v1_destroy(virtual_keyboard->ips);
|
||||
|
||||
if (virtual_keyboard->input_panel)
|
||||
zwp_input_panel_v1_destroy(virtual_keyboard->input_panel);
|
||||
|
||||
|
|
Loading…
Reference in New Issue