summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrey A. Chernov <ache@FreeBSD.org>2001-08-31 20:17:32 +0000
committerAndrey A. Chernov <ache@FreeBSD.org>2001-08-31 20:17:32 +0000
commitc4b2cc78e35fcbf53d599c0d806af9f4cd1cd907 (patch)
tree104b91d26a1a0d36d2939921a4dd77f59cf77876
parent4fd606bfba6c98c2b0728d56a876732076712fdb (diff)
Notes
-rw-r--r--lib/libc/stdio/ftell.c14
1 files changed, 2 insertions, 12 deletions
diff --git a/lib/libc/stdio/ftell.c b/lib/libc/stdio/ftell.c
index a0b5fa8d9ff7d..9f1e106a51bd8 100644
--- a/lib/libc/stdio/ftell.c
+++ b/lib/libc/stdio/ftell.c
@@ -114,8 +114,8 @@ get_real_pos:
* those from ungetc) cause the position to be
* smaller than that in the underlying object.
*/
- pos -= fp->_r;
- if (pos < 0) {
+ if ((pos -= fp->_r) < 0 ||
+ (HASUB(fp) && (pos -= fp->_ur) < 0)) {
fp->_p = fp->_bf._base;
fp->_r = 0;
if (HASUB(fp))
@@ -123,16 +123,6 @@ get_real_pos:
if (spos == -1)
goto get_real_pos;
pos = spos;
- } else if (HASUB(fp)) {
- pos -= fp->_ur;
- if (pos < 0) {
- fp->_p = fp->_bf._base;
- fp->_r = 0;
- FREEUB(fp);
- if (spos == -1)
- goto get_real_pos;
- pos = spos;
- }
}
} else if ((fp->_flags & __SWR) && fp->_p != NULL) {
/*