Deal with reading a buffer less than what was allocated.

With this fix, file_long_read now passes.
Well, that's pretty big departure from POSIX way, requires checking (and initializing) a memory location not just for error, but for critical path, and while it may be " conceptually cleaner", it's rather not "conceptually simpler".