Yes, the pattern isn't useful for function calls that return results that are used as parameters in later function calls, which tends to happen all the time.
(f = fopen(filename, "rb")) &&
...
(ptr = malloc(size)) &&
fread(ptr, 1, size, f) == size &&
...