rem: file_size = S_ISREG (st.st_mode) ? st.st_size : INPUT_FILE_SIZE_GUESS;
add: if (S_ISREG (st.st_mode)) file_size = st.st_size; else {  if (sort_size) return sort_size; file_size = INPUT_FILE_SIZE_GUESS; }  if (! size_bound) { size_bound = sort_size; if (! size_bound) size_bound = default_sort_size (); }
context: sort_buffer_size (FILE *const *fps, int nfps,		  char *const *files, int nfiles,		  size_t line_bytes, size_t size_bound){  /* In the worst case, each input byte is a newline.  */  size_t worst_case_per_input_byte = line_bytes + 1;  /* Keep enough room for one extra input line and an extra byte.     This extra room might be needed when preparing to read EOF.  */  size_t size = worst_case_per_input_byte + 1;  int i;  for (i = 0; i < nfiles; i++)    {      struct stat st;      off_t file_size;      size_t worst_case;      if ((i < nfps ? fstat (fileno (fps[i]), &st)	   : strcmp (files[i], "-") == 0 ? fstat (STDIN_FILENO, &st)	   : stat (files[i], &st))	  != 0)	die (_("stat failed"), files[i]);      file_size = S_ISREG (st.st_mode) ? st.st_size : INPUT_FILE_SIZE_GUESS;      /* Add the amount of memory needed to represent the worst case	 where the input consists entirely of newlines followed by a	 single non-newline.  Check for overflow.  */      worst_case = file_size * worst_case_per_input_byte + 1;      if (file_size != worst_case / worst_case_per_input_byte	  || size_bound - size <= worst_case)	return size_bound;      size += worst_case;    }  return size;}