From dbf616b650552733786ff6b96f7b98a42128c398 Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Mon, 31 Jul 2023 20:06:05 +0200 Subject: pipewire: add upstream fix to build with older compilers Signed-off-by: Michael Olbrich --- ...or-dereferencing-pointer-to-incomplete-ty.patch | 56 ++++++++++++++++++++++ patches/pipewire-0.3.76/series | 4 ++ 2 files changed, 60 insertions(+) create mode 100644 patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch create mode 100644 patches/pipewire-0.3.76/series diff --git a/patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch b/patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch new file mode 100644 index 000000000..9ce3c90b2 --- /dev/null +++ b/patches/pipewire-0.3.76/0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch @@ -0,0 +1,56 @@ +From: Sourav Das +Date: Sun, 30 Jul 2023 10:23:25 +0530 +Subject: [PATCH] spa: fixes for dereferencing pointer to incomplete type in + __typeof__ + + before gcc 10 its not supporting pointer dereferencing in __typeof__. + so made changes according to that. Fixes #3375 + + clang also defines __GNUC__ and resolves '4' along with __clang__ which + resolves '1'. On any version of clang, __GNUC__ and resolves '4'. + anyway clang has this feature since version 3. +--- + spa/include/spa/utils/cleanup.h | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/spa/include/spa/utils/cleanup.h b/spa/include/spa/utils/cleanup.h +index 04e2bd193f6e..aa3eb2eea71b 100644 +--- a/spa/include/spa/utils/cleanup.h ++++ b/spa/include/spa/utils/cleanup.h +@@ -40,13 +40,20 @@ __extension__ ({ \ + _old_value; \ + }) + ++#if __GNUC__ > 10 || defined(__clang__) + #define spa_steal_ptr(ptr) ((__typeof__(*(ptr)) *) spa_exchange((ptr), NULL)) ++#else ++#define spa_steal_ptr(ptr) ((__typeof__(ptr)) spa_exchange((ptr), NULL)) ++#endif ++ + #define spa_steal_fd(fd) spa_exchange((fd), -1) + + /* ========================================================================== */ + + #include + ++ ++#if __GNUC__ > 10 || defined(__clang__) + #define spa_clear_ptr(ptr, destructor) \ + __extension__ ({ \ + __typeof__(*(ptr)) *_old_value = spa_steal_ptr(ptr); \ +@@ -54,6 +61,15 @@ __extension__ ({ \ + destructor(_old_value); \ + (void) 0; \ + }) ++#else ++#define spa_clear_ptr(ptr, destructor) \ ++__extension__ ({ \ ++ __typeof__(ptr) _old_value = spa_steal_ptr(ptr); \ ++ if (_old_value) \ ++ destructor(_old_value); \ ++ (void) 0; \ ++}) ++#endif + + static inline void _spa_autofree_cleanup_func(void *p) + { diff --git a/patches/pipewire-0.3.76/series b/patches/pipewire-0.3.76/series new file mode 100644 index 000000000..0969cdc94 --- /dev/null +++ b/patches/pipewire-0.3.76/series @@ -0,0 +1,4 @@ +# generated by git-ptx-patches +#tag:base --start-number 1 +0001-spa-fixes-for-dereferencing-pointer-to-incomplete-ty.patch +# f664d909a9bfc1aca629f79fc2991ed1 - git-ptx-patches magic -- cgit v1.2.3