When size_t is bigger than off_t, pos - r->length will end up very large,
instead of negative, when r->length > pos, so the MAX didn't help to get
rid of negative values. I'm not sure that this should really happen in
practice, but it's better to avoid it.
Reported by GCC on x86-64.
/* PSPP - a program for statistical analysis.
- Copyright (C) 2010, 2011 Free Software Foundation, Inc.
+ Copyright (C) 2010, 2011, 2014 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
line_reader_tell (const struct line_reader *r)
{
off_t pos = lseek (r->fd, 0, SEEK_CUR);
- if (pos >= 0)
- pos = MAX (0, pos - r->length);
- return pos;
+ return (pos < 0 ? pos
+ : pos >= r->length ? pos - r->length
+ : 0);
}
/* Returns true if end of file has been encountered reading R. */