>From 66b4bf9e4933f708a5729f28df5b594c731f9431 Mon Sep 17 00:00:00 2001 From: Paul Eggert <egg...@cs.ucla.edu> Date: Sun, 24 Jul 2011 01:44:03 -0700 Subject: [PATCH 1/2] ftell: do not assume wraparound signed arithmetic
* lib/ftell.c: Include <limits.h>. (ftell): Don't assume wraparound signed arithmetic. --- ChangeLog | 4 ++++ lib/ftell.c | 5 +++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4571ed4..196a76a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2011-07-24 Paul Eggert <egg...@cs.ucla.edu> + ftell: do not assume wraparound signed arithmetic + * lib/ftell.c: Include <limits.h>. + (ftell): Don't assume wraparound signed arithmetic. + * README: Modernize discussion of signed integers. Assuming overflow wraparound is no longer safe. Mention ones' complement and signed magnitude. diff --git a/lib/ftell.c b/lib/ftell.c index 79083fb..1e8e3a2 100644 --- a/lib/ftell.c +++ b/lib/ftell.c @@ -20,6 +20,7 @@ #include <stdio.h> #include <errno.h> +#include <limits.h> /* Get off_t. */ #include <unistd.h> @@ -28,8 +29,8 @@ ftell (FILE *fp) { /* Use the replacement ftello function with all its workarounds. */ off_t offset = ftello (fp); - if (offset == (long)offset) - return (long)offset; + if (LONG_MIN <= offset && offset <= LONG_MAX) + return offset; else { errno = EOVERFLOW; -- 1.7.4.4 >From cdacbab7b59b72db82b9cac404c7b884d8cdd682 Mon Sep 17 00:00:00 2001 From: Paul Eggert <egg...@cs.ucla.edu> Date: Sun, 24 Jul 2011 01:47:12 -0700 Subject: [PATCH 2/2] ftell: don't include <unistd.h> * lib/ftell.c: Don't include <unistd.h>. <stdio.h> is now guaranteed to define off_t, since the ftell module depends on the stdio module. --- ChangeLog | 5 +++++ lib/ftell.c | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 196a76a..24ae09e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2011-07-24 Paul Eggert <egg...@cs.ucla.edu> + ftell: don't include <unistd.h> + * lib/ftell.c: Don't include <unistd.h>. <stdio.h> is now + guaranteed to define off_t, since the ftell module depends on the + stdio module. + ftell: do not assume wraparound signed arithmetic * lib/ftell.c: Include <limits.h>. (ftell): Don't assume wraparound signed arithmetic. diff --git a/lib/ftell.c b/lib/ftell.c index 1e8e3a2..bd72a2f 100644 --- a/lib/ftell.c +++ b/lib/ftell.c @@ -21,8 +21,6 @@ #include <errno.h> #include <limits.h> -/* Get off_t. */ -#include <unistd.h> long ftell (FILE *fp) -- 1.7.4.4