From aa7008bc38cb16a430a785bea73646d63050cdf0 Mon Sep 17 00:00:00 2001 From: Juan Date: Sun, 4 Oct 2020 18:41:22 -0300 Subject: [PATCH] wofi: fix segfaults under musl --- srcpkgs/wofi/patches/fix-mode-thread.patch | 30 ++++++++++++++++++++++ srcpkgs/wofi/template | 2 +- 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/wofi/patches/fix-mode-thread.patch diff --git a/srcpkgs/wofi/patches/fix-mode-thread.patch b/srcpkgs/wofi/patches/fix-mode-thread.patch new file mode 100644 index 00000000000..93888b1c45a --- /dev/null +++ b/srcpkgs/wofi/patches/fix-mode-thread.patch @@ -0,0 +1,30 @@ +# HG changeset patch +# User Scoopta +# Date 1601697276 25200 +# Fri Oct 02 20:54:36 2020 -0700 +# Node ID 8a4a5e29ca9c1fb0a11ed9b329d275f5c02154a6 +# Parent ac8dc17ab751b13b6d4ddcc1a1467e4beb8d7d26 +The mode thread will not be joined multiple times as this causes segfaults under musl + +--- src/wofi.c ++++ src/wofi.c +@@ -103,6 +103,7 @@ + static bool dynamic_lines; + static struct wl_list mode_list; + static pthread_t mode_thread; ++static bool has_joined_mode = false; + + static struct map* keys; + +@@ -596,7 +597,10 @@ + } + + static gboolean insert_all_widgets(gpointer data) { +- pthread_join(mode_thread, NULL); ++ if(!has_joined_mode) { ++ pthread_join(mode_thread, NULL); ++ has_joined_mode = true; ++ } + struct wl_list* modes = data; + if(modes->prev == modes) { + return FALSE; diff --git a/srcpkgs/wofi/template b/srcpkgs/wofi/template index 5f6b75dca57..4c21a047785 100644 --- a/srcpkgs/wofi/template +++ b/srcpkgs/wofi/template @@ -1,7 +1,7 @@ # Template file for 'wofi' pkgname=wofi version=1.2.2 -revision=1 +revision=2 wrksrc="${pkgname}-v${version}" build_style=meson hostmakedepends="pkg-config"