mirror of
https://github.com/swaywm/sway.git
synced 2026-04-30 06:46:24 -04:00
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:
parent
e01eff4810
commit
b1134d3ee3
2 changed files with 172 additions and 165 deletions
|
|
@ -31,7 +31,7 @@ struct sway_session_lock {
|
||||||
struct sway_server {
|
struct sway_server {
|
||||||
struct wl_display *wl_display;
|
struct wl_display *wl_display;
|
||||||
struct wl_event_loop *wl_event_loop;
|
struct wl_event_loop *wl_event_loop;
|
||||||
const char *socket;
|
char *socket;
|
||||||
|
|
||||||
struct wlr_backend *backend;
|
struct wlr_backend *backend;
|
||||||
struct wlr_session *session;
|
struct wlr_session *session;
|
||||||
|
|
|
||||||
|
|
@ -366,15 +366,15 @@ bool server_init(struct sway_server *server) {
|
||||||
&server->output_power_manager_set_mode);
|
&server->output_power_manager_set_mode);
|
||||||
server->input_method = wlr_input_method_manager_v2_create(server->wl_display);
|
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->text_input = wlr_text_input_manager_v3_create(server->wl_display);
|
||||||
server->foreign_toplevel_list =
|
server->foreign_toplevel_list = wlr_ext_foreign_toplevel_list_v1_create(
|
||||||
wlr_ext_foreign_toplevel_list_v1_create(server->wl_display, SWAY_FOREIGN_TOPLEVEL_LIST_VERSION);
|
server->wl_display, SWAY_FOREIGN_TOPLEVEL_LIST_VERSION);
|
||||||
server->foreign_toplevel_manager =
|
server->foreign_toplevel_manager =
|
||||||
wlr_foreign_toplevel_manager_v1_create(server->wl_display);
|
wlr_foreign_toplevel_manager_v1_create(server->wl_display);
|
||||||
|
|
||||||
sway_session_lock_init();
|
sway_session_lock_init();
|
||||||
|
|
||||||
#if WLR_HAS_DRM_BACKEND
|
#if WLR_HAS_DRM_BACKEND
|
||||||
server->drm_lease_manager=
|
server->drm_lease_manager =
|
||||||
wlr_drm_lease_v1_manager_create(server->wl_display, server->backend);
|
wlr_drm_lease_v1_manager_create(server->wl_display, server->backend);
|
||||||
if (server->drm_lease_manager) {
|
if (server->drm_lease_manager) {
|
||||||
server->drm_lease_request.notify = handle_drm_lease_request;
|
server->drm_lease_request.notify = handle_drm_lease_request;
|
||||||
|
|
@ -386,13 +386,19 @@ bool server_init(struct sway_server *server) {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
server->export_dmabuf_manager_v1 = wlr_export_dmabuf_manager_v1_create(server->wl_display);
|
server->export_dmabuf_manager_v1 =
|
||||||
server->screencopy_manager_v1 = wlr_screencopy_manager_v1_create(server->wl_display);
|
wlr_export_dmabuf_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->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);
|
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->wlr_data_control_manager_v1 =
|
||||||
server->ext_data_control_manager_v1 = wlr_ext_data_control_manager_v1_create(server->wl_display, 1);
|
wlr_data_control_manager_v1_create(server->wl_display);
|
||||||
server->security_context_manager_v1 = wlr_security_context_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_viewporter_create(server->wl_display);
|
||||||
wlr_single_pixel_buffer_manager_v1_create(server->wl_display);
|
wlr_single_pixel_buffer_manager_v1_create(server->wl_display);
|
||||||
server->content_type_manager_v1 =
|
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 =
|
struct wlr_cursor_shape_manager_v1 *cursor_shape_manager =
|
||||||
wlr_cursor_shape_manager_v1_create(server->wl_display, 1);
|
wlr_cursor_shape_manager_v1_create(server->wl_display, 1);
|
||||||
server->request_set_cursor_shape.notify = handle_request_set_cursor_shape;
|
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);
|
wl_list_init(&server->pending_launcher_ctxs);
|
||||||
|
|
||||||
|
|
@ -506,10 +513,10 @@ void server_fini(struct sway_server *server) {
|
||||||
wlr_backend_destroy(server->backend);
|
wlr_backend_destroy(server->backend);
|
||||||
wl_display_destroy(server->wl_display);
|
wl_display_destroy(server->wl_display);
|
||||||
list_free(server->dirty_nodes);
|
list_free(server->dirty_nodes);
|
||||||
|
|
||||||
#if HAVE_LIBSFDO
|
#if HAVE_LIBSFDO
|
||||||
sfdo_destroy(server->sfdo);
|
sfdo_destroy(server->sfdo);
|
||||||
#endif
|
#endif
|
||||||
|
free(server->socket);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool server_start(struct sway_server *server) {
|
bool server_start(struct sway_server *server) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue