On Sat, 6 Mar 1999, Nate Williams wrote:

> > > > > I make a habit of checking out any interesting kernel changes in 
> > > > > full, and one
> > > > > thing I found in the recent diff by Mr. Wollman for kern_timeout.c is:
> > > > > 
> > > > > +void
> > > > > +callout_init(c)
> > > > > +       struct  callout *c;
> > > > > +{
> > > > > +       bzero(c, sizeof c);
> > > > >  }
> > > > > 
> > > > > That doesn't look correct, does it?
> > > > 
> > > > Agreed.  I think it should be "sizeof *c".
> > > 
> > > Ahh, I see.  I think it should say
> > > 
> > >        bzero(c, sizeof(struct callout));
> > > 
> > > To avoid the compiler using the size of the pointers et. al.
> > > 
> > 
> > I prefer to do this in my own code, usually. However, using *c doesn't
> > "use the size of the pointer".
> 
> Understood, but the point being that Garrett is an experienced
> programmer, and made this mistake.  The latter version avoids any
> possibilities of said mistake.
> 

It's just as easy to make the mistake of typing sizeof(struct foo *); I think
there should perhaps be a warning in gcc/egcs about this, like
-Wpointer-sizeof that would warn if you try sizeof(c) where c is a pointer,
but not sizeof(*c) or sizeof(void *). It would help find this kind of
thing, but of course would only be enabled by user-choice, not by default.
Maybe I should just write my own linter instead :)

> 
> 
> Nate
> 
> 
> To Unsubscribe: send mail to majord...@freebsd.org
> with "unsubscribe freebsd-current" in the body of the message
> 

 Brian Feldman                                    _ __  ___ ___ ___  
 gr...@unixhelp.org                           _ __ ___ | _ ) __|   \ 
             http://www.freebsd.org/     _ __ ___ ____ | _ \__ \ |) |
 FreeBSD: The Power to Serve!      _ __ ___ ____ _____ |___/___/___/ 



To Unsubscribe: send mail to majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to