From 1e876973596ecb4582286ae641b34972d4cd2a31 Mon Sep 17 00:00:00 2001 From: "Roger A. Light" Date: Sun, 5 Oct 2014 21:56:44 +0100 Subject: [PATCH] Fix mutex being incorrectly passed by value. Fixes bug #1373785. --- ChangeLog.txt | 3 +++ lib/messages_mosq.c | 10 +++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 43d6ec4b..2e055ed6 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -5,6 +5,9 @@ Broker: - Fix possible memory leak when using a topic that has a leading slash. Fixes bug #1360985. +Client library: +- Fix mutex being incorrectly passed by value. Fixes bug #1373785. + 1.3.4 - 20140806 ================ diff --git a/lib/messages_mosq.c b/lib/messages_mosq.c index e3e8a190..84afda76 100644 --- a/lib/messages_mosq.c +++ b/lib/messages_mosq.c @@ -297,7 +297,7 @@ int _mosquitto_message_remove(struct mosquitto *mosq, uint16_t mid, enum mosquit } #ifdef WITH_THREADING -void _mosquitto_message_retry_check_actual(struct mosquitto *mosq, struct mosquitto_message_all *messages, pthread_mutex_t mutex) +void _mosquitto_message_retry_check_actual(struct mosquitto *mosq, struct mosquitto_message_all *messages, pthread_mutex_t *mutex) #else void _mosquitto_message_retry_check_actual(struct mosquitto *mosq, struct mosquitto_message_all *messages) #endif @@ -306,7 +306,7 @@ void _mosquitto_message_retry_check_actual(struct mosquitto *mosq, struct mosqui assert(mosq); #ifdef WITH_THREADING - pthread_mutex_lock(&mutex); + pthread_mutex_lock(mutex); #endif while(messages){ @@ -335,15 +335,15 @@ void _mosquitto_message_retry_check_actual(struct mosquitto *mosq, struct mosqui messages = messages->next; } #ifdef WITH_THREADING - pthread_mutex_unlock(&mutex); + pthread_mutex_unlock(mutex); #endif } void _mosquitto_message_retry_check(struct mosquitto *mosq) { #ifdef WITH_THREADING - _mosquitto_message_retry_check_actual(mosq, mosq->out_messages, mosq->out_message_mutex); - _mosquitto_message_retry_check_actual(mosq, mosq->in_messages, mosq->in_message_mutex); + _mosquitto_message_retry_check_actual(mosq, mosq->out_messages, &mosq->out_message_mutex); + _mosquitto_message_retry_check_actual(mosq, mosq->in_messages, &mosq->in_message_mutex); #else _mosquitto_message_retry_check_actual(mosq, mosq->out_messages); _mosquitto_message_retry_check_actual(mosq, mosq->in_messages);