> > "Arnaud Bergeron" <[EMAIL PROTECTED]> writes:
> >
> >> mt-daapd suffers from a case I've named 0.5:
> >>
> >> pointer -> int
> >>
> >> and then the int is used as a truth value.  So this is not a bug.
> >
> > Not a bug? Really?
> >
> > $ cat foo.c
> > int
> > main()
> > {
> >        int true;
> >        void *nonnull = (void *)0x7000000000000000;
> >
> >        true = nonnull;
> >        printf(true ? "true\n" : "false\n");
> >        true = !!nonnull;
> >        printf(true ? "true\n" : "false\n");
> > }
> > $ make foo
> > cc -O2 -pipe    -o foo foo.c
> > foo.c: In function `main':
> > foo.c:7: warning: assignment makes integer from pointer without a cast
> > $ ./foo
> > false
> > true
> > $
> >
> > //art
> 
> I'll admit I didn't think about this.  So I'll have to fix it.  It
> helps that most uses of the pointers look like that:

And think about the big-endian 64 bit machines too.  If the cast is
in the right place, and you ensure that all memory is allocated below
4GB... guess what happens.

Reply via email to