Simon Josefsson wrote:
> bool
> isbase64 (char ch)
> {
>   return to_uchar (ch) <= 255 && 0 <= b64[to_uchar (ch)];
> }
> ...
> Presumably the warning is because gcc believe an unsigned char cannot
> be larger than 255, but we didn't want to assume that since I don't
> think C89 guarantee it.  Correct me if I'm wrong...
>
> Is there a clean fix?

bool
isbase64 (char ch)
{
  return
         #if UCHAR_MAX > 255
         to_uchar (ch) <= 255
         #else
         true
         #endif
         && 0 <= b64[to_uchar (ch)];
}

or

bool
isbase64 (char ch)
{
  #if UCHAR_MAX > 255
  if (to_uchar (ch) > 255)
    return false;
  #endif
  return 0 <= b64[to_uchar (ch)];
}

Ugly, but a warning on which people stumble over and over again (because
it appears even without -Wall) is even worse. I work around this kind of
warning also in GNU gettext.

Bruno



_______________________________________________
bug-gnulib mailing list
bug-gnulib@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-gnulib

Reply via email to