Date: Sun, 21 Jun 2009 21:54:28 -0700 From: Steve Kargl <sgk@troutmask.apl.washington.edu> To: Adrian Chadd <adrian@freebsd.org> Cc: Roman Divacky <rdivacky@freebsd.org>, current@freebsd.org Subject: Re: [PATCH]: if (cond); foo() in firewire Message-ID: <20090622045428.GA18123@troutmask.apl.washington.edu> In-Reply-To: <d763ac660906212104w4bf066eatf5529779e603bd0e@mail.gmail.com> References: <20090621082022.GA88526@freebsd.org> <d763ac660906212104w4bf066eatf5529779e603bd0e@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Jun 22, 2009 at 12:04:49PM +0800, Adrian Chadd wrote:
> 2009/6/21 Roman Divacky <rdivacky@freebsd.org>:
> > hi
> >
> > is this patch correct? may I commit it?
> >
> > Index: ../../../dev/firewire/fwdev.c
> > ===================================================================
> > --- ../../../dev/firewire/fwdev.c (revision 194573)
> > +++ ../../../dev/firewire/fwdev.c (working copy)
> > @@ -443,7 +443,7 @@
> > xfer->send.pay_len = uio->uio_resid;
> > if (uio->uio_resid > 0) {
> > if ((err = uiomove((caddr_t)&xfer->send.payload[0],
> > - uio->uio_resid, uio)));
> > + uio->uio_resid, uio)))
> > goto out;
> > }
> >
> >
> > another bug found by the "useless warnings in clang" ;)
>
> Is clang also evaluating all subsequent execution paths to tell you
> what the change in program flow is? :)
>
> I hate to be the harbinger of evilness, but I'd at least attempt a
> cursory glance at the code to make sure subsequent code is doing the
> right thing. (It certainly looks like a vanilla userland transfer!)
>
> 2c,
I agree with you. Nothing like side effects to screw up
a persons clang.
#include <stdio.h>
#include <stdlib.h>
static int
side_effect(int *i)
{
*i = 42;
return 0;
}
int
main(void)
{
int i;
if (side_effect(&i));
if (i == 42)
printf("%d\n", i);
return 0;
}
--
Steve
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090622045428.GA18123>
