summaryrefslogtreecommitdiff
path: root/src/debug/HyprCtl.cpp
diff options
context:
space:
mode:
authorTom Englund <tomenglund26@gmail.com>2024-06-02 18:42:54 +0200
committerVaxry <vaxry@vaxry.net>2024-06-03 18:46:20 +0200
commiteaecf7db14cff793e46c432edf68fef58b43373b (patch)
treedd3ae4a05f0a7bea5478a9b726a621926609de10 /src/debug/HyprCtl.cpp
parente08195d240f54049745c503ba736cf99a9c09b25 (diff)
core: fix a few asan reported issues and a coredump on exit (#6285)
* xwayland: add destructor to CXWM and free resource the wl_event_resource was running upon destruction of the compositor causing a null pointer segfault in onX11Event so ensure the event is removed upon destruction, also free the memory allocated by xcb_errors_context_new and finally call xcb_disconnect on the connection to free the fd and its memory. * hyprctl: dont leak the fd on destruction add a destructor and properly free the fd on destruction * eventloop: add destructor and free event source properly free the wl_event_source upon destruction.
Diffstat (limited to 'src/debug/HyprCtl.cpp')
-rw-r--r--src/debug/HyprCtl.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp
index bbe5019a..4563c5a1 100644
--- a/src/debug/HyprCtl.cpp
+++ b/src/debug/HyprCtl.cpp
@@ -1625,6 +1625,11 @@ CHyprCtl::CHyprCtl() {
startHyprCtlSocket();
}
+CHyprCtl::~CHyprCtl() {
+ if (m_eventSource)
+ wl_event_source_remove(m_eventSource);
+}
+
SP<SHyprCtlCommand> CHyprCtl::registerCommand(SHyprCtlCommand cmd) {
return m_vCommands.emplace_back(makeShared<SHyprCtlCommand>(cmd));
}
@@ -1805,5 +1810,5 @@ void CHyprCtl::startHyprCtlSocket() {
Debug::log(LOG, "Hypr socket started at {}", socketPath);
- wl_event_loop_add_fd(g_pCompositor->m_sWLEventLoop, m_iSocketFD, WL_EVENT_READABLE, hyprCtlFDTick, nullptr);
+ m_eventSource = wl_event_loop_add_fd(g_pCompositor->m_sWLEventLoop, m_iSocketFD, WL_EVENT_READABLE, hyprCtlFDTick, nullptr);
}