Re: do {} while (0) nitpick
David Steele <david@pgmasters.net>
From: David Steele <david@pgmasters.net>
To: Bruce Momjian <bruce@momjian.us>, Tom Lane <tgl@sss.pgh.pa.us>
Cc: John Naylor <john.naylor@2ndquadrant.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2020-05-01T13:26:40Z
Lists: pgsql-hackers
On 4/30/20 9:52 PM, Bruce Momjian wrote:
> On Thu, Apr 30, 2020 at 09:51:10PM -0400, Tom Lane wrote:
>> John Naylor <john.naylor@2ndquadrant.com> writes:
>>> As I understand it, the point of having "do {} while (0)" in a
>>> multi-statement macro is to turn it into a simple statement.
>>
>> Right.
>>
>>> As such,
>>> ending with a semicolon in both the macro definition and the
>>> invocation will turn it back into multiple statements, creating
>>> confusion if someone were to invoke the macro in an "if" statement.
>>
>> Yeah. I'd call these actual bugs, and perhaps even back-patch worthy.
>
> Agreed. Those semicolons could easily create bugs.
+1. The patch looks good to me.
--
-David
david@pgmasters.net
Commits
-
Get rid of trailing semicolons in C macro definitions.
- ad80d3ea27b1 9.5.22 landed
- a8df87d8638c 9.6.18 landed
- a2098b60216c 11.8 landed
- 49718aa9ee5e 10.13 landed
- c08da32f133b 12.3 landed
- 0da06d9faf9e 13.0 landed