Skip to content

Commit

Permalink
tests/optional_mutex: check counter within a lock
Browse files Browse the repository at this point in the history
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
  • Loading branch information
gperciva committed Jan 26, 2024
1 parent 4511e76 commit 21f7048
Showing 1 changed file with 34 additions and 2 deletions.
36 changes: 34 additions & 2 deletions tests/optional_mutex/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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[])
{
Expand All @@ -112,8 +144,8 @@ main(int argc, char * argv[])
inc_dec_counter(NULL);
#endif

/* Check the counter. */
if ((value != 0) || (counter != counter_expected))
/* Check that the counter has the expected value. */
if (check_counter(counter_expected))
goto err0;

/* Success! */
Expand Down

0 comments on commit 21f7048

Please sign in to comment.