Add mbstate clear missed in one of the cases.
Move overflow check for fseek as early as needed.
This commit is contained in:
parent
9e897b1bc6
commit
ef0fddb70d
@ -283,6 +283,7 @@ abspos:
|
|||||||
fp->_r -= n;
|
fp->_r -= n;
|
||||||
}
|
}
|
||||||
fp->_flags &= ~__SEOF;
|
fp->_flags &= ~__SEOF;
|
||||||
|
memset(&fp->_extra->mbstate, 0, sizeof(mbstate_t));
|
||||||
return (0);
|
return (0);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -293,6 +294,11 @@ dumb:
|
|||||||
if (__sflush(fp) ||
|
if (__sflush(fp) ||
|
||||||
(ret = _sseek(fp, (fpos_t)offset, whence)) == POS_ERR)
|
(ret = _sseek(fp, (fpos_t)offset, whence)) == POS_ERR)
|
||||||
return (-1);
|
return (-1);
|
||||||
|
if (ltest && ret > LONG_MAX) {
|
||||||
|
fp->_flags |= __SERR;
|
||||||
|
errno = EOVERFLOW;
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
/* success: clear EOF indicator and discard ungetc() data */
|
/* success: clear EOF indicator and discard ungetc() data */
|
||||||
if (HASUB(fp))
|
if (HASUB(fp))
|
||||||
FREEUB(fp);
|
FREEUB(fp);
|
||||||
@ -301,10 +307,5 @@ dumb:
|
|||||||
/* fp->_w = 0; */ /* unnecessary (I think...) */
|
/* fp->_w = 0; */ /* unnecessary (I think...) */
|
||||||
fp->_flags &= ~__SEOF;
|
fp->_flags &= ~__SEOF;
|
||||||
memset(&fp->_extra->mbstate, 0, sizeof(mbstate_t));
|
memset(&fp->_extra->mbstate, 0, sizeof(mbstate_t));
|
||||||
if (ltest && ret > LONG_MAX) {
|
|
||||||
fp->_flags |= __SERR;
|
|
||||||
errno = EOVERFLOW;
|
|
||||||
return (-1);
|
|
||||||
}
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user