rem: if (n_buffered != nchars) eof = 1;
add: if (n_buffered != n_bytes) eof = true;
context: line_bytes_split (size_t nchars){  size_t n_read;  char *bp;  int eof = 0;  size_t n_buffered = 0;  char *buf = (char *) xmalloc (nchars);  do    {      /* Fill up the full buffer size from the input file.  */      n_read = full_read (input_desc, buf + n_buffered, nchars - n_buffered);      if (n_read == SAFE_READ_ERROR)	error (EXIT_FAILURE, errno, "%s", infile);      n_buffered += n_read;      if (n_buffered != nchars)	eof = 1;      /* Find where to end this chunk.  */      bp = buf + n_buffered;      if (n_buffered == nchars)	{	  while (bp > buf && bp[-1] != '\n')	    bp--;	}      /* If chunk has no newlines, use all the chunk.  */      if (bp == buf)	bp = buf + n_buffered;      /* Output the chars as one output file.  */      cwrite (1, buf, bp - buf);      /* Discard the chars we just output; move rest of chunk	 down to be the start of the next chunk.  Source and	 destination probably overlap.  */      n_buffered -= bp - buf;      if (n_buffered > 0)	memmove (buf, bp, n_buffered);    }  while (!eof);  free (buf);}