coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] maint: remove useless (off_t) cast of lseek arg


From: Jim Meyering
Subject: Re: [PATCH] maint: remove useless (off_t) cast of lseek arg
Date: Sun, 29 May 2011 11:33:44 +0200

Pádraig Brady wrote:

> On 28/05/11 22:47, Jim Meyering wrote:
>> Jim Meyering wrote:
>>
>>> These (off_t) casts are anachronistic.
>>> They were useful in pre-ANSI-C days, i.e., before prototypes.
>>> There are two remaining off_t casts, and neither appears useful:
>>> (one is even inconsistently formatted, with no space after the ")" ;-)
>>>
>>>   src/shred.c:      if (offset > OFF_T_MAX - (off_t) soff)
>>>   src/truncate.c:          if (ssize > OFF_T_MAX - (off_t)fsize)
>>>
>>> So I'll probably remove them, too.
>>
>> Now I'm not so sure.
>> soff is of type size_t and fsize is uintmax_t,
>> each of which may be wider than off_t.
>> I suspect that each of these trigger one of the warnings
>> that we have not enabled.
>
> Yes it will trigger -Wsign-compare which has helped
> me find hard to spot bugs.  It will also cause a bug I
> think when ssize is negative, as then it will be promoted
> to a large positive number for the comparison.
> The truncate-overflow test catches this change in behavior.

Hah!  It was definitely too late.
For me to write the above without even running "make check"...
Patch discarded.  Thanks.

I was tempted to revisit enabling -Wsign-compare for src/,
but count over 50 warnings/errors, mostly for code where a
"fix" would involve adding casts.  So I still think -Wsign-compare
is not worth it.

However, there's at least one change that is clean
and that does address one of those warnings:

>From 0d0b2c3108bf85c3d71ca9dc688898e715354cff Mon Sep 17 00:00:00 2001
From: Jim Meyering <address@hidden>
Date: Sun, 29 May 2011 11:28:29 +0200
Subject: [PATCH] maint: placate -Wsign-compare when it's non-invasive

* src/stdbuf.c: Declare loop index to be unsigned.
---
 src/stdbuf.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/stdbuf.c b/src/stdbuf.c
index 607859c..2f66dd5 100644
--- a/src/stdbuf.c
+++ b/src/stdbuf.c
@@ -257,7 +257,7 @@ set_LD_PRELOAD (void)
 static void
 set_libstdbuf_options (void)
 {
-  int i;
+  unsigned int i;

   for (i = 0; i < ARRAY_CARDINALITY (stdbuf); i++)
     {
--
1.7.5.2.660.g9f46c



reply via email to

[Prev in Thread] Current Thread [Next in Thread]