My configuration of sxmo fork of suckless dwm.

git clone git://watertao.xyz/programs/sxmo-dwm.git

commit 95562252ec3cf5848ad859e5849d5a7693ff4c3b
parent 8920f12853192c7a285623560d699c6feb6d3f5e
Author: Jochen Sprickerhof <git@jochen.sprickerhof.de>
Date:   Thu, 25 Feb 2021 23:53:02 +0100

Track multikeypendingtimer creation state

Calling timer_delete with an invalid timer is unspecified behavior so we
need to track of the timer was created before. See

https://sourceware.org/pipermail/libc-alpha/2005-August/019335.html

For a discussion.

This fixes a segfault when linking with glibc.

Signed-off-by: Maarten van Gompel <proycon@anaproy.nl>

Diffstat:
Mdwm.c | 6+++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/dwm.c b/dwm.c @@ -1292,13 +1292,17 @@ void keypresstimerdispatch(int msduration, int data) { struct sigevent timer_signal_event; struct itimerspec timer_period; + static int multikeypendingtimer_created = 0; // Clear out the old timer if any set,and dispatch new timer - timer_delete(multikeypendingtimer); + if (multikeypendingtimer_created) { + timer_delete(multikeypendingtimer); + } timer_signal_event.sigev_notify = SIGEV_THREAD; timer_signal_event.sigev_notify_function = keypresstimerdone; timer_signal_event.sigev_value.sival_int = data; timer_signal_event.sigev_notify_attributes = NULL; timer_create(CLOCK_MONOTONIC, &timer_signal_event, &multikeypendingtimer); + multikeypendingtimer_created = 1; timer_period.it_value.tv_sec = 0; timer_period.it_value.tv_nsec = msduration * 1000000; timer_period.it_interval.tv_sec = 0;