3 ms·
Careful with that example. The parentheses here don't just remove the warning. They remove a bug. This code: if (buf = malloc(buflen) == NULL) goto
by loup-vaillant 12y ago
Careful with that example. The parentheses here don't just remove the warning. They remove a bug. This code:
if (buf = malloc(buflen) == NULL)
goto outofmemory;
is actually equivalent to that code:
if (buf = (malloc(buflen) == NULL))
goto outofmemory;
So, malloc gives you a pointer, which is compared to the null pointer, giving you either 0 or 1. And that is assigned to buf. Hopefully your compiler will warn you about the type error that spawns from such dark magic.
- deleted 12y ago[deleted]
- cperciva 12y agoOops, quite right. I was originally thinking of if ((rc = pthread_mutex_lock(mtx))) err("mutex_lock failed: %s", strerror(rc)); but decided to switch to a better-known function at the last minute and completely lost the point.