server: fix socket path memory leak

The socket path allocated with strdup() in server_init() was
not being freed in server_fini().
Remove const qualifier and add proper cleanup.

Rebased from origin/master.
This commit is contained in:
YaoBing Xiao 2025-06-05 13:46:06 +08:00 committed by myrslint
parent e01eff4810
commit b1134d3ee3
2 changed files with 172 additions and 165 deletions

View file

@ -31,7 +31,7 @@ struct sway_session_lock {
struct sway_server {
struct wl_display *wl_display;
struct wl_event_loop *wl_event_loop;
const char *socket;
char *socket;
struct wlr_backend *backend;
struct wlr_session *session;

View file

@ -366,15 +366,15 @@ bool server_init(struct sway_server *server) {
&server->output_power_manager_set_mode);
server->input_method = wlr_input_method_manager_v2_create(server->wl_display);
server->text_input = wlr_text_input_manager_v3_create(server->wl_display);
server->foreign_toplevel_list =
wlr_ext_foreign_toplevel_list_v1_create(server->wl_display, SWAY_FOREIGN_TOPLEVEL_LIST_VERSION);
server->foreign_toplevel_list = wlr_ext_foreign_toplevel_list_v1_create(
server->wl_display, SWAY_FOREIGN_TOPLEVEL_LIST_VERSION);
server->foreign_toplevel_manager =
wlr_foreign_toplevel_manager_v1_create(server->wl_display);
sway_session_lock_init();
#if WLR_HAS_DRM_BACKEND
server->drm_lease_manager=
server->drm_lease_manager =
wlr_drm_lease_v1_manager_create(server->wl_display, server->backend);
if (server->drm_lease_manager) {
server->drm_lease_request.notify = handle_drm_lease_request;
@ -386,13 +386,19 @@ bool server_init(struct sway_server *server) {
}
#endif
server->export_dmabuf_manager_v1 = wlr_export_dmabuf_manager_v1_create(server->wl_display);
server->screencopy_manager_v1 = wlr_screencopy_manager_v1_create(server->wl_display);
server->ext_image_copy_capture_manager_v1 = wlr_ext_image_copy_capture_manager_v1_create(server->wl_display, 1);
server->export_dmabuf_manager_v1 =
wlr_export_dmabuf_manager_v1_create(server->wl_display);
server->screencopy_manager_v1 =
wlr_screencopy_manager_v1_create(server->wl_display);
server->ext_image_copy_capture_manager_v1 =
wlr_ext_image_copy_capture_manager_v1_create(server->wl_display, 1);
wlr_ext_output_image_capture_source_manager_v1_create(server->wl_display, 1);
server->wlr_data_control_manager_v1 = wlr_data_control_manager_v1_create(server->wl_display);
server->ext_data_control_manager_v1 = wlr_ext_data_control_manager_v1_create(server->wl_display, 1);
server->security_context_manager_v1 = wlr_security_context_manager_v1_create(server->wl_display);
server->wlr_data_control_manager_v1 =
wlr_data_control_manager_v1_create(server->wl_display);
server->ext_data_control_manager_v1 =
wlr_ext_data_control_manager_v1_create(server->wl_display, 1);
server->security_context_manager_v1 =
wlr_security_context_manager_v1_create(server->wl_display);
wlr_viewporter_create(server->wl_display);
wlr_single_pixel_buffer_manager_v1_create(server->wl_display);
server->content_type_manager_v1 =
@ -424,7 +430,8 @@ bool server_init(struct sway_server *server) {
struct wlr_cursor_shape_manager_v1 *cursor_shape_manager =
wlr_cursor_shape_manager_v1_create(server->wl_display, 1);
server->request_set_cursor_shape.notify = handle_request_set_cursor_shape;
wl_signal_add(&cursor_shape_manager->events.request_set_shape, &server->request_set_cursor_shape);
wl_signal_add(&cursor_shape_manager->events.request_set_shape,
&server->request_set_cursor_shape);
wl_list_init(&server->pending_launcher_ctxs);
@ -506,10 +513,10 @@ void server_fini(struct sway_server *server) {
wlr_backend_destroy(server->backend);
wl_display_destroy(server->wl_display);
list_free(server->dirty_nodes);
#if HAVE_LIBSFDO
sfdo_destroy(server->sfdo);
#endif
free(server->socket);
}
bool server_start(struct sway_server *server) {