aboutsummaryrefslogtreecommitdiff
path: root/audio/yabridge/fix-libdbus-connection.patch
diff options
context:
space:
mode:
Diffstat (limited to 'audio/yabridge/fix-libdbus-connection.patch')
-rw-r--r--audio/yabridge/fix-libdbus-connection.patch48
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