From 7686e760b5d9c588f94e425ecb5ec92d971b596b Mon Sep 17 00:00:00 2001 From: "Andrey A. Chernov" Date: Thu, 25 Oct 2001 22:56:04 +0000 Subject: [PATCH] In > LONG_MAX test use sseek return value and not _offset which can be not active. --- lib/libc/stdio/fseek.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/libc/stdio/fseek.c b/lib/libc/stdio/fseek.c index 9dc8bd28275..237d7939a0a 100644 --- a/lib/libc/stdio/fseek.c +++ b/lib/libc/stdio/fseek.c @@ -110,7 +110,7 @@ _fseeko(fp, offset, whence, ltest) int ltest; { register fpos_t (*seekfn) __P((void *, fpos_t, int)); - fpos_t target, curoff; + fpos_t target, curoff, ret; size_t n; struct stat st; int havepos; @@ -295,7 +295,8 @@ abspos: * do it. Allow the seek function to change fp->_bf._base. */ dumb: - if (__sflush(fp) || _sseek(fp, (fpos_t)offset, whence) == POS_ERR) + if (__sflush(fp) || + (ret = _sseek(fp, (fpos_t)offset, whence)) == POS_ERR) return (-1); /* success: clear EOF indicator and discard ungetc() data */ if (HASUB(fp)) @@ -304,7 +305,7 @@ dumb: fp->_r = 0; /* fp->_w = 0; */ /* unnecessary (I think...) */ fp->_flags &= ~__SEOF; - if (ltest && fp->_offset > LONG_MAX) { + if (ltest && ret > LONG_MAX) { fp->_flags |= __SERR; errno = EOVERFLOW; return (-1);