From 8a14c0ab8921788842f6692367482d47fe22e511 Mon Sep 17 00:00:00 2001 From: Graham Percival Date: Wed, 7 Feb 2024 11:21:05 -0800 Subject: [PATCH] tests/optional_mutex: check counter within a lock The variables "value" and "counter" are modified within mutex locks, so it's good "lock hygiene" to do the same for the final check. Reported by: Coverity scan --- tests/optional_mutex/main.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/tests/optional_mutex/main.c b/tests/optional_mutex/main.c index fbe5248e..45ebbec4 100644 --- a/tests/optional_mutex/main.c +++ b/tests/optional_mutex/main.c @@ -95,6 +95,38 @@ test_pthread(void) } #endif +/* Return 0 if everything matches; 1 if they do not match; -1 on error. */ +static int +check_counter(int counter_expected) +{ + int rc, match; + + /* Lock if we're using pthread. */ + if ((rc = optional_mutex_lock(&mutex)) != 0) { + warn0("optional_mutex_lock: %s", strerror(rc)); + goto err0; + } + + /* Check the value and counter. */ + if ((value == 0) && (counter == counter_expected)) + match = 0; + else + match = 1; + + /* Unlock if we're using pthread. */ + if ((rc = optional_mutex_unlock(&mutex)) != 0) { + warn0("optional_mutex_unlock: %s", strerror(rc)); + goto err0; + } + + /* Success! */ + return (match); + +err0: + /* Failure! */ + return (-1); +} + int main(int argc, char * argv[]) { @@ -113,7 +145,7 @@ main(int argc, char * argv[]) #endif /* Check the counter. */ - if ((value != 0) || (counter != counter_expected)) + if (check_counter(counter_expected)) goto err0; /* Success! */