aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/xwayland
diff options
context:
space:
mode:
authorTom Englund <[email protected]>2024-06-02 18:42:54 +0200
committerVaxry <[email protected]>2024-06-03 18:46:20 +0200
commiteaecf7db14cff793e46c432edf68fef58b43373b (patch)
treedd3ae4a05f0a7bea5478a9b726a621926609de10 /src/xwayland
parente08195d240f54049745c503ba736cf99a9c09b25 (diff)
downloadHyprland-eaecf7db14cff793e46c432edf68fef58b43373b.tar.gz
Hyprland-eaecf7db14cff793e46c432edf68fef58b43373b.zip
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/xwayland')
-rw-r--r--src/xwayland/XWM.cpp11
-rw-r--r--src/xwayland/XWM.hpp1
2 files changed, 12 insertions, 0 deletions
diff --git a/src/xwayland/XWM.cpp b/src/xwayland/XWM.cpp
index b0f8d6aa..5dfd4839 100644
--- a/src/xwayland/XWM.cpp
+++ b/src/xwayland/XWM.cpp
@@ -837,6 +837,17 @@ CXWM::CXWM() {
xcb_flush(connection);
}
+CXWM::~CXWM() {
+ if (errors)
+ xcb_errors_context_free(errors);
+
+ if (connection)
+ xcb_disconnect(connection);
+
+ if (eventSource)
+ wl_event_source_remove(eventSource);
+}
+
void CXWM::setActiveWindow(xcb_window_t window) {
xcb_change_property(connection, XCB_PROP_MODE_REPLACE, screen->root, HYPRATOMS["_NET_ACTIVE_WINDOW"], HYPRATOMS["WINDOW"], 32, 1, &window);
}
diff --git a/src/xwayland/XWM.hpp b/src/xwayland/XWM.hpp
index b312f4a9..1d695a15 100644
--- a/src/xwayland/XWM.hpp
+++ b/src/xwayland/XWM.hpp
@@ -60,6 +60,7 @@ struct SXSelection {
class CXWM {
public:
CXWM();
+ ~CXWM();
int onEvent(int fd, uint32_t mask);