Don't seek to the end if write buffer is empty (in append modes).

PR:             204156
MFC after:      1 week
This commit is contained in:
ache 2015-11-01 06:15:14 +00:00
parent 39d22b9678
commit 1b3f07327e

View File

@ -119,7 +119,18 @@ _ftello(FILE *fp, fpos_t *offset)
if (HASUB(fp))
pos -= fp->_r; /* Can be negative at this point. */
} else if ((fp->_flags & __SWR) && fp->_p != NULL) {
if ((fp->_flags & __SAPP) || (fp->_flags2 & __S2OAP)) {
/*
* Writing. Any buffered characters cause the
* position to be greater than that in the
* underlying object.
*/
n = fp->_p - fp->_bf._base;
if (pos > OFF_MAX - n) {
errno = EOVERFLOW;
return (1);
}
if (n > 0 &&
((fp->_flags & __SAPP) || (fp->_flags2 & __S2OAP))) {
int serrno = errno;
errno = 0;
@ -137,16 +148,6 @@ _ftello(FILE *fp, fpos_t *offset)
}
errno = serrno;
}
/*
* Writing. Any buffered characters cause the
* position to be greater than that in the
* underlying object.
*/
n = fp->_p - fp->_bf._base;
if (pos > OFF_MAX - n) {
errno = EOVERFLOW;
return (1);
}
pos += n;
}
*offset = pos;