Messages in this thread | | | Date | Fri, 7 Sep 2007 13:52:51 +0200 (CEST) | From | Jan Engelhardt <> | Subject | Re: Stray nulls when reading from AF_UNIX sockets |
| |
On Sep 6 2007 12:23, David Miller wrote: >> return copied ? : err; >> } >> >> Shouldn't this read: >> >> return copied ? copied : err; >> >> Or am I missing something? > >These two statements are equivalent, the first version is >a shorthand allowed by gcc.
Not only that. With x?x:z, x is evaluated twice, while with x?:z, x is only evaluated once. That's for stuff when you want to, say [dumb example follows],
size_t my_read(..) { return read(..) ? : -1 }
and the only other way would be to use a temporary,
size_t my_read(..) { size_t x = read(..); return x ? x : -1; }
gcc should be smart enough to also do optimization in the second case..
Jan -- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |