buildroot.buildroot.org archive mirror
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/dbus-cpp: new patch to fix dbus c++ threading issue
@ 2020-07-06 15:33 Kamel Bouhara
  2020-07-12  9:12 ` Thomas Petazzoni
  0 siblings, 1 reply; 3+ messages in thread
From: Kamel Bouhara @ 2020-07-06 15:33 UTC (permalink / raw)
  To: buildroot

From: https://sourceforge.net/p/dbus-cplusplus/patches/18/

dispatcher.h has invalid template code. When DBUS_HAS_RECURSIVE_MUTEX is
MutexFreeFn and MutexLockFn become of type void and the code is valid.
See lines 232-235.
However, when a user #includes dispatcher.h directly or indirectly the
macro DBUS_HAS_RECURSIVE_MUTEX is undefined. This makes the above
function pointers defined of type bool and but then _init_threading
function call in line 259 becomes invalid, as it passes function
pointers to mutex_free and mutex_lock which or of type void.

Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
---
 .../dbus-cpp/0004-dbus-c++-threading.patch    | 45 +++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 package/dbus-cpp/0004-dbus-c++-threading.patch

diff --git a/package/dbus-cpp/0004-dbus-c++-threading.patch b/package/dbus-cpp/0004-dbus-c++-threading.patch
new file mode 100644
index 0000000000..502320ad09
--- /dev/null
+++ b/package/dbus-cpp/0004-dbus-c++-threading.patch
@@ -0,0 +1,45 @@
+--- libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h.threading	2017-02-15 13:40:53.796004263 +0000
++++ libdbus-c++-0.9.0/include/dbus-c++/dispatcher.h	2017-02-15 13:40:46.907000493 +0000
+@@ -188,6 +188,7 @@
+ /* classes for multithreading support
+ */
+
++#if 0
+ class DXXAPI Mutex
+ {
+ public:
+@@ -243,9 +244,11 @@
+ typedef bool (*CondVarWaitTimeoutFn)(CondVar *cv, Mutex *mx, int timeout);
+ typedef void (*CondVarWakeOneFn)(CondVar *cv);
+ typedef void (*CondVarWakeAllFn)(CondVar *cv);
++#endif
+
+ void DXXAPI _init_threading();
+
++#if 0
+ void DXXAPI _init_threading(
+   MutexNewFn, MutexFreeFn, MutexLockFn, MutexUnlockFn,
+   CondVarNewFn, CondVarFreeFn, CondVarWaitFn, CondVarWaitTimeoutFn, CondVarWakeOneFn, CondVarWakeAllFn
+@@ -312,6 +315,7 @@
+     cv->wake_all();
+   }
+ };
++#endif
+
+ } /* namespace DBus */
+
+--- libdbus-c++-0.9.0/src/dispatcher.cpp.threading	2017-02-15 13:48:22.627249868 +0000
++++ libdbus-c++-0.9.0/src/dispatcher.cpp	2017-02-15 13:48:29.164253445 +0000
+@@ -253,6 +253,7 @@
+ #endif//DBUS_HAS_THREADS_INIT_DEFAULT
+ }
+
++#if 0
+ void DBus::_init_threading(
+   MutexNewFn m1,
+   MutexFreeFn m2,
+@@ -318,3 +319,4 @@
+ #endif//DBUS_HAS_RECURSIVE_MUTEX
+   dbus_threads_init(&functions);
+ }
++#endif
-- 
2.26.2

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-07-20 12:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-06 15:33 [Buildroot] [PATCH] package/dbus-cpp: new patch to fix dbus c++ threading issue Kamel Bouhara
2020-07-12  9:12 ` Thomas Petazzoni
2020-07-20 12:38   ` Kamel Bouhara

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).