This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
consistently parenthesise the RW lock macro arguments
authorTony Cook <tony@develop-help.com>
Mon, 14 Dec 2020 04:54:25 +0000 (15:54 +1100)
committerKarl Williamson <khw@cpan.org>
Mon, 14 Dec 2020 20:25:17 +0000 (13:25 -0700)
commit385ff59891f97046e99af32c3718c9d5cea167e6
treea3656b72c9a05484a3b93e2bcd74d0f61bb596d1
parent13d2ab8bbbcb68824b0e53e403df7b9dd3ec55d5
consistently parenthesise the RW lock macro arguments

and fix the mixed up pointer vs non-pointer use of the mutex
argument.

Without the parentheses (or without the new tests in the previous
commit) for code like;

 PERL_WRITE_LOCK(&PL_some_mutex);

the MUTEX_LOCK(mutex.lock) in that code would expand to:

  MUTEX_LOCK(&PL_some_mutex.lock);

and happen to work,  even though the next line has:

  if ((mutex)->readers_count)

treating the mutex parameter as a pointer.

With the parentheses the MUTEX_LOCK(mutex.lock) becomes:

  MUTEX_LOCK((&PL_some_mutex).lock);

which as expected fails to compile in a similar way to the pointer
test code in the previous commit.
thread.h