If '\n' was present at the size_t boundary of a file,
then that and subsequent data would be discarded.
* src/paste.c (paste_parallel): Avoid the overflow issue
by changing the flag to a boolean rather than a count.
* NEWS: Mention the bug fix.
head, od, split, tac, tail, and wc no longer mishandle input from files in
/proc and /sys file systems that report somewhat-incorrect file sizes.
+ paste no longer truncates output for large input files. This would happen
+ for example with files larger than 4GiB on 32 bit systems with a '\n'
+ character at the 4GiB position.
+ [the bug dates back to the initial implementation]
+
** New features
chroot accepts the new --skip-chdir option to not change the working directory
{
int chr IF_LINT ( = 0); /* Input character. */
int err IF_LINT ( = 0); /* Input errno value. */
- size_t line_length = 0; /* Number of chars in line. */
+ bool sometodo = false; /* Input chars to process. */
if (fileptr[i])
{
while (chr != EOF)
{
- line_length++;
+ sometodo = true;
if (chr == '\n')
break;
xputchar (chr);
}
}
- if (line_length == 0)
+ if (! sometodo)
{
/* EOF, read error, or closed file.
If an EOF or error, close the file. */