On Fri, Apr 24, 2026 at 06:54:31AM +0800, Kevin J. McCarthy wrote:
> On Thu, Apr 23, 2026 at 02:03:45PM +0200, Alejandro Colomar via Mutt-dev 
> wrote:
> > Hi Kevin,
> > 
> > On 2026-04-23T14:10:31+0800, Kevin J. McCarthy wrote:
> > > +/* Generate length_requested random bytes of data */
> > > +void mutt_random_bytes(char *random_bytes, size_t length_requested)
> > > +{
> > > +#if defined(HAVE_GETRANDOM)
> > > +  size_t res;
> > > +
> > > +  do
> > > +  {
> > > +    res = getrandom(random_bytes, length_requested, GRND_NONBLOCK);
[...]
> > > +  } while ((res == (size_t) -1) && (errno == EINTR));
> > 
> > This cast is dangerous.  It's safer to compare to literal -1.  I know
> > you'll get a -Wsign-compare (part of -Wextra) diagnostic, but that's
> > something that GCC should fix.  I've been using -Wno-error=sign-compare
> > for some time, precisely for the false negatives.
> > 
> > If for some reason, the type of the cast doesn't match the type of the
> > variable, we'll get a bug.  On the other hand, non-casted literal -1
> > will magically convert to any wider unsigned type and do the right
> > thing.
> 
> I'll try removing the cast then, but it if triggers warnings and aborts the
> CI compiles on any of the sr.ht servers prefer to add it back in.

In CI, as well with any default build, we only use -Wall which does not
include -Wsign-compare for C (GCC and clang). tcc does not have
-Wsign-compare.

Reply via email to