[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 4/3] checkpatch: Enforce proper do/while (0) sty
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH 4/3] checkpatch: Enforce proper do/while (0) style |
Date: |
Fri, 01 Dec 2017 08:31:29 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Eric Blake <address@hidden> writes:
> On 11/30/2017 08:01 AM, Eric Blake wrote:
>> while (0) is only idiomatic in a macro definition, where the caller
>> will be supplying the trailing ';'. Warn if the macro has a duplicate.
>>
>> Signed-off-by: Eric Blake <address@hidden>
>> ---
>> scripts/checkpatch.pl | 5 +++++
>> 1 file changed, 5 insertions(+)
>>
>> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
>> index 34df753571..acb66bff34 100755
>> --- a/scripts/checkpatch.pl
>> +++ b/scripts/checkpatch.pl
>> @@ -1622,6 +1622,11 @@ sub process {
>> }
>> }
>>
>> +# 'while (0);' is odd; only macros should use while (0), without trailing ;
>> + if ($line =~ /while\s*\(0\);/) {
>
> Should this also check for uses of 'while (false);' ?
Do we think it's likely to occur?
> Interestingly enough, we have an instance of 'do/while (false);' in
> tests/vhost-user-bridge.c that is NOT in a macro, but is used for the
> convenience of being able to 'break;' out early rather than using a
> goto. Similarly for chardev/char-serial.c using 'while (0);' outside
> of a macro.
That "cure" merely adds gratuitous cleverness to the "disease".
> Those may be worth rewriting to use goto as separate
> patches if we want to restrict ALL use of 'while \((0|false)\);'
I'd support that.
- Re: [Qemu-devel] [PATCH 4/3] checkpatch: Enforce proper do/while (0) style,
Markus Armbruster <=