[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: warning in 'base64' module
From: |
Simon Josefsson |
Subject: |
Re: warning in 'base64' module |
Date: |
Thu, 12 Jan 2006 09:58:16 +0100 |
User-agent: |
Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux) |
Paul Eggert <address@hidden> writes:
> Simon Josefsson <address@hidden> writes:
>
>> Is there a clean fix?
>
> How about something like this?
>
> #if UCHAR_MAX == 255
> # define uchar_in_range(c) true
> #else
> # define uchar_in_range(c) ((c) <= 255)
> #endif
>
> and then use uchar_in_range in the rest of your code.
I like that better than Bruno's patch (I dislike #if's inside
functions), so I installed the patch below.
2006-01-12 Simon Josefsson <address@hidden>
* base64.c: Fix warning, reported by Bruno Haible
<address@hidden> and patch by Paul Eggert <address@hidden>.
--- base64.c 13 Sep 2005 10:03:09 +0200 1.5
+++ base64.c 12 Jan 2006 09:56:12 +0100
@@ -1,5 +1,5 @@
/* base64.c -- Encode binary data using printable characters.
- Copyright (C) 1999, 2000, 2001, 2004, 2005 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001, 2004, 2005, 2006 Free Software Foundation,
Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -50,6 +50,9 @@
/* Get malloc. */
#include <stdlib.h>
+/* Get UCHAR_MAX. */
+#include <limits.h>
+
/* C89 compliant way to cast 'char' to 'unsigned char'. */
static inline unsigned char
to_uchar (char ch)
@@ -278,10 +281,16 @@
B64 (252), B64 (253), B64 (254), B64 (255)
};
+#if UCHAR_MAX == 255
+# define uchar_in_range(c) true
+#else
+# define uchar_in_range(c) ((c) <= 255)
+#endif
+
bool
isbase64 (char ch)
{
- return to_uchar (ch) <= 255 && 0 <= b64[to_uchar (ch)];
+ return uchar_in_range (to_uchar (ch)) && 0 <= b64[to_uchar (ch)];
}
/* Decode base64 encoded input array IN of length INLEN to output