From e06109294505a28ab32406eebe5f5257dd202855 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Wed, 3 Aug 2022 10:24:47 +0200 Subject: [PATCH] Patch wl_callback.done to be a destructor --- src/Quasar/Wayland/Protocol/TH.hs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Quasar/Wayland/Protocol/TH.hs b/src/Quasar/Wayland/Protocol/TH.hs index 2dc7475..10f6410 100644 --- a/src/Quasar/Wayland/Protocol/TH.hs +++ b/src/Quasar/Wayland/Protocol/TH.hs @@ -617,7 +617,9 @@ parseMessage _isRequest interface (opcode, element) = do isDestructor <- case mtype of - Nothing -> pure False + -- Patch `wl_callback.done` to be a destructor. + -- This ensures `done` is called only once, releases the id, and prevents a memory leak. + Nothing -> pure (interface == "wl_callback" && name == "done") Just "destructor" -> pure True Just messageType -> fail $ "Unknown message type: " <> messageType -- GitLab