diff options
Diffstat (limited to 'audio/yabridge/fix-libdbus-connection.patch')
-rw-r--r-- | audio/yabridge/fix-libdbus-connection.patch | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/audio/yabridge/fix-libdbus-connection.patch b/audio/yabridge/fix-libdbus-connection.patch new file mode 100644 index 000000000000..4acbee292789 --- /dev/null +++ b/audio/yabridge/fix-libdbus-connection.patch @@ -0,0 +1,48 @@ +commit 8d508dc2fefe9745ffa9cb14e1d7519a7852aa95 +Author: Robbert van der Helm <mail@robbertvanderhelm.nl> +Date: Sun Apr 7 22:49:00 2024 +0200 + + Fix segfault destroying libdbus connection + +diff --git a/CHANGELOG.md b/CHANGELOG.md +index a1739b3d..429880a6 100644 +--- a/CHANGELOG.md ++++ b/CHANGELOG.md +@@ -6,6 +6,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), + and this project adheres to [Semantic + Versioning](https://semver.org/spec/v2.0.0.html). + ++## [Unreleased] ++ ++### Fixed ++ ++- Fixed a potential segfault when unloading yabridge. ++ + ## [5.1.0] - 2023-12-23 + + ### Added +diff --git a/src/common/notifications.cpp b/src/common/notifications.cpp +index 403103bf..654b6c83 100644 +--- a/src/common/notifications.cpp ++++ b/src/common/notifications.cpp +@@ -57,9 +57,19 @@ std::mutex libdbus_mutex; + LIBDBUS_FUNCTIONS + #undef X + ++/** ++ * The deleter used for `libdbus_connection`. `libdbus_connection` can't ++ * directly reference `libdbus_connection_unref` directly because it will not ++ * yet have been initialized until just before `libdbus_connection` gets ++ * initialized. ++ */ ++static void close_dbus_connection(DBusConnection* connection) { ++ libdbus_connection_unref(connection); ++} ++ + std::unique_ptr<DBusConnection, void (*)(DBusConnection*)> libdbus_connection( + nullptr, +- libdbus_connection_unref); ++ close_dbus_connection); + + /** + * Try to set up D-Bus. Returns `false` if a function could not be resolved or |