svn commit: r233700 - head/sys/kern
Joerg Sonnenberger
joerg at britannica.bec.de
Sat Mar 31 11:10:15 UTC 2012
On Fri, Mar 30, 2012 at 09:49:51PM +0200, Dimitry Andric wrote:
> On 2012-03-30 15:30, Stefan Farfeleder wrote:
> >here are a few similar cases.
>
> Hm, what about this one that clang warns about:
>
> sys/dev/asr/asr.c:2420:57: warning: for loop has empty body [-Wempty-body]
> for (ha = &Asr_softc_list; *ha; ha = &((*ha)->ha_next));
> ^
> sys/dev/asr/asr.c:2420:57: note: put the semicolon on a separate line to silence this warning [-Wempty-body]
>
> I'm not sure about it though, the code looks like this:
>
> static int
> asr_attach(device_t dev)
> {
> [...]
> Asr_softc_t *sc, **ha;
> [...]
> LIST_INIT(&(sc->ha_ccb));
> /* Link us into the HA list */
> for (ha = &Asr_softc_list; *ha; ha = &((*ha)->ha_next));
> *(ha) = sc;
>
> It seems the for loop walks the list until the end, then tacks 'sc' onto
> it.
>
> So to 'fix' the warning, and make the meaning more explicit, we should
> probably rewrite that fragment as:
>
> LIST_INIT(&(sc->ha_ccb));
> /* Link us into the HA list */
> for (ha = &Asr_softc_list; *ha; ha = &((*ha)->ha_next))
> ;
> *(ha) = sc;
I would really just move the ha = into the loop body -- same semantic
and no such issue as a dangling ;.
Joerg
More information about the svn-src-all
mailing list