summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2012-04-20 22:05:22 +0200
committerLars-Dominik Braun <lars@6xq.net>2012-04-20 22:05:22 +0200
commitbbed23df60c4bfc067b4f7c03574cfe11cc8bb60 (patch)
tree6e5bb509bc46db4039675092ab45b7375f852caa /src
parent35763dea799c96361e288a10eab0fbd16c36e880 (diff)
downloadpianobar-bbed23df60c4bfc067b4f7c03574cfe11cc8bb60.tar.gz
pianobar-bbed23df60c4bfc067b4f7c03574cfe11cc8bb60.tar.bz2
pianobar-bbed23df60c4bfc067b4f7c03574cfe11cc8bb60.zip
Don’t unlock mutex that is not locked
Strict pthread implementations (like OpenBSD’s rthreads with PTHREAD_MUTEX_TYPE_STRICT_NP set) don’t allow unlocking a mutex that is not locked, resulting in abort() being called. Always aquiring the lock before unlocking it while skipping to the next song fixes this. Thanks to David Coppa.
Diffstat (limited to 'src')
-rw-r--r--src/ui_act.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ui_act.c b/src/ui_act.c
index 2cc559f..76b9411 100644
--- a/src/ui_act.c
+++ b/src/ui_act.c
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2008-2011
+Copyright (c) 2008-2012
Lars-Dominik Braun <lars@6xq.net>
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -50,6 +50,8 @@ static inline void BarUiDoSkipSong (struct audioPlayer *player) {
assert (player != NULL);
player->doQuit = 1;
+ /* unlocking an unlocked mutex is forbidden by some implementations */
+ pthread_mutex_trylock (&player->pauseMutex);
pthread_mutex_unlock (&player->pauseMutex);
}