- buffer_size = bytes_left;
- status = buffer_size % BLOCKSIZE;
- if (status)
- memset (start->buffer + bytes_left, 0,
- (size_t) (BLOCKSIZE - status));
- }
+ union block *start = find_next_block ();
+ size_t buffer_size = available_space_after (start);
+ ssize_t status;
+ char buf[UINTMAX_STRSIZE_BOUND];
+
+ if (bytes_left < buffer_size)
+ {
+ buffer_size = bytes_left;
+ status = buffer_size % BLOCKSIZE;
+ if (status)
+ memset (start->buffer + bytes_left, 0, BLOCKSIZE - status);
+ }