2008-02-16 09:27:22

by David Miller

[permalink] [raw]
Subject: Re: + bluetooth-fix-warning-in-net-bluetooth-hci_sysfsc.patch added to -mm tree

From: [email protected]
Date: Fri, 15 Feb 2008 20:49:33 -0800

> Subject: bluetooth: fix warning in net/bluetooth/hci_sysfs.c
> From: Andrew Morton <[email protected]>
>
> net/bluetooth/hci_sysfs.c: In function 'del_conn':
> net/bluetooth/hci_sysfs.c:339: warning: suggest parentheses around assignment used as truth value
>
> Cc: Dave Young <[email protected]>
> Cc: David S. Miller <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>

Linus barfed when this exact patch got posted a few weeks
ago, he said he considers just adding parenthesis to quiet
this warning awful and explicit NULL test should be used.


2008-02-16 09:55:01

by Andrew Morton

[permalink] [raw]
Subject: Re: + bluetooth-fix-warning-in-net-bluetooth-hci_sysfsc.patch added to -mm tree

On Sat, 16 Feb 2008 01:27:41 -0800 (PST) David Miller <[email protected]> wrote:

> From: [email protected]
> Date: Fri, 15 Feb 2008 20:49:33 -0800
>
> > Subject: bluetooth: fix warning in net/bluetooth/hci_sysfs.c
> > From: Andrew Morton <[email protected]>
> >
> > net/bluetooth/hci_sysfs.c: In function 'del_conn':
> > net/bluetooth/hci_sysfs.c:339: warning: suggest parentheses around assignment used as truth value
> >
> > Cc: Dave Young <[email protected]>
> > Cc: David S. Miller <[email protected]>
> > Signed-off-by: Andrew Morton <[email protected]>
>
> Linus barfed when this exact patch got posted a few weeks
> ago, he said he considers just adding parenthesis to quiet
> this warning awful and explicit NULL test should be used.

- while (dev = device_find_child(&conn->dev, NULL, __match_tty)) {
+ while ((dev = device_find_child(&conn->dev, NULL, __match_tty))) {

hrm.

box:/usr/src/linux-2.6.25-rc2> grep -r 'while [(][(].*{$' . | wc -l
1240
box:/usr/src/linux-2.6.25-rc2> grep -r 'while [(][(].*{$' . | grep -v NULL | wc -l
867

so two thirds of them presently don't bother testing for NULL. It's a
pretty common idiom.

(adds the != NULL, sees that it reaches column 82, drops patch in disgust)

2008-02-16 12:04:00

by Roel Kluin

[permalink] [raw]
Subject: Re: + bluetooth-fix-warning-in-net-bluetooth-hci_sysfsc.patch added to -mm tree

Andrew Morton wrote:
> On Sat, 16 Feb 2008 01:27:41 -0800 (PST) David Miller <[email protected]> wrote:
>
>> From: [email protected]
>> Date: Fri, 15 Feb 2008 20:49:33 -0800
>>
>>> Subject: bluetooth: fix warning in net/bluetooth/hci_sysfs.c
>>> From: Andrew Morton <[email protected]>
>>>
>>> net/bluetooth/hci_sysfs.c: In function 'del_conn':
>>> net/bluetooth/hci_sysfs.c:339: warning: suggest parentheses around assignment used as truth value
>>>
>>> Cc: Dave Young <[email protected]>
>>> Cc: David S. Miller <[email protected]>
>>> Signed-off-by: Andrew Morton <[email protected]>
>> Linus barfed when this exact patch got posted a few weeks
>> ago, he said he considers just adding parenthesis to quiet
>> this warning awful and explicit NULL test should be used.
>
> - while (dev = device_find_child(&conn->dev, NULL, __match_tty)) {
> + while ((dev = device_find_child(&conn->dev, NULL, __match_tty))) {
>
> hrm.
>
> box:/usr/src/linux-2.6.25-rc2> grep -r 'while [(][(].*{$' . | wc -l
> 1240
> box:/usr/src/linux-2.6.25-rc2> grep -r 'while [(][(].*{$' . | grep -v NULL | wc -l
> 867
>
> so two thirds of them presently don't bother testing for NULL. It's a
> pretty common idiom.
>
> (adds the != NULL, sees that it reaches column 82, drops patch in disgust)

Not my results:

# greps for 'while ((x = y(...)))' see below for variables

git-grep -n -A2 "while" |
sed -n "s/^\([^\.]*\.[chsS]-[0-9]*-\|\([^\.]*\.[chsS]:[0-9]*:\)$s\)\(.*\)$/\2\3/p" |
tr "\n" "@" |
grep -o "@[^@]*while$z($z($z$W$z=$z$W$z($h)$z)$z)" |
tr "@\t" " " | tr -s " " | wc -l
262

# while ((x = y(...)) != NULL)

git-grep -n -A2 "while" |
sed -n "s/^\([^\.]*\.[chsS]-[0-9]*-\|\([^\.]*\.[chsS]:[0-9]*:\)$s\)\(.*\)$/\2\3/p" |
tr "\n" "@" |
grep -o "@[^@]*while$z($z($z$W$z=$z$W$z($h)$z)$z\!=${z}NULL$z)" |
tr "@\t" " " | tr -s " " | wc -l
333

# while ((x = y(...)) != 0)

git-grep -n -A2 "while" |
sed -n "s/^\([^\.]*\.[chsS]-[0-9]*-\|\([^\.]*\.[chsS]:[0-9]*:\)$s\)\(.*\)$/\2\3/p" |
tr "\n" "@" |
grep -o "@[^@]*while$z($z($z$W$z=$z$W$z($h)$z)$z\!=${z}0$z)" |
tr "@\t" " " | tr -s " " | wc -l
45

# while (!(x = y(...)))

git-grep -n -A2 "while" |
sed -n "s/^\([^\.]*\.[chsS]-[0-9]*-\|\([^\.]*\.[chsS]:[0-9]*:\)$s\)\(.*\)$/\2\3/p" |
tr "\n" "@" |
grep -o "@[^@]*while$z($z\!$z($z$W$z=$z$W$z($h)$z)$z)" |
tr "@\t" " " | tr -s " " | wc -l
19


V="[A-Za-z_]\+[A-Za-z0-9_]*"
W="$V\(\[$V\]\|\[[0-9]\+\]\|\.$V\|->$V\)*"
s="[[:space:]]*"
h="[^()]*\(([^()]*)[^()]*\)*"
z="[@[:space:]]*"