All of lore.kernel.org
 help / color / mirror / Atom feed
* compiling stops at od compare
@ 2016-01-30 13:22 Willem Jan Withagen
  2016-01-30 22:57 ` Matt Benjamin
  0 siblings, 1 reply; 4+ messages in thread
From: Willem Jan Withagen @ 2016-01-30 13:22 UTC (permalink / raw)
  To: ceph-devel

When trying to compile on CentOS 7, gcc = 4.8.3

os/bluestore/BlueFS.cc: In member function ‘int
BlueFS::_read(BlueFS::FileReader*, BlueFS::FileReaderBuffer*, uint64_t,
size_t, ceph::bufferlist*, char*)’:
os/bluestore/BlueFS.cc:731:31: warning: comparison between signed and
unsigned integer expressions [-Wsign-compare]
     int r = MIN((int)len, left);

This MIN is used to determine the amount of buffer that is still left
to be filed.
And here len and left are both size_t..., suggesting that both cannot be
negative. So either both need to be promoted/cast, or neither.

The cast (int)len suggests that len could be negative.
The part where that could happen is at line 750:

   off += r;
    len -= r;
    ret += r;

So there the loop exit needs len to be exactly equal to r. Even if the
loop specifies while(len>0). if len gets "negative" it grows into
something rather big.

Now if len never gets negative then it also does not need to get cast to
int. If it does, then in the unsigned case it will always be larger than
left.

So bottomline is that the cast serves no purpose?
Removing it fixes compilation.

--WjW

--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-01-31 12:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-30 13:22 compiling stops at od compare Willem Jan Withagen
2016-01-30 22:57 ` Matt Benjamin
2016-01-30 23:13   ` Willem Jan Withagen
2016-01-31 12:25     ` [patch] " Willem Jan Withagen

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.