[ovs-dev] [warnings 1/3] Fix calls to ctype functions.
Ethan Jackson
ethan at nicira.com
Fri Apr 15 19:21:55 UTC 2011
Looks Good.
On Fri, Apr 15, 2011 at 9:41 AM, Ben Pfaff <blp at nicira.com> wrote:
> The ctype functions often need casts to be fully C standards compliant.
> Here's the full explanation that I used to post to comp.lang.c from time
> to time when the issue came up:
>
> With the to*() and is*() functions, you should be careful to cast
> `char' arguments to `unsigned char' before calling them. Type `char'
> may be signed or unsigned, depending on your compiler or its
> configuration. If `char' is signed, then some characters have
> negative values; however, the arguments to is*() and to*() functions
> must be nonnegative (or EOF). Casting to `unsigned char' fixes this
> problem by forcing the character to the corresponding positive value.
>
> This fixes the following warnings from some version of GCC:
>
> lib/ofp-parse.c:828: warning: array subscript has type 'char'
> lib/ofp-print.c:617: warning: array subscript has type 'char'
>
> Reported-by: YAMAMOTO Takashi <yamamoto at valinux.co.jp>
> ---
> AUTHORS | 1 +
> lib/ofp-parse.c | 3 ++-
> lib/ofp-print.c | 2 +-
> 3 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/AUTHORS b/AUTHORS
> index bc0f3f6..180428a 100644
> --- a/AUTHORS
> +++ b/AUTHORS
> @@ -80,6 +80,7 @@ Stephen Hemminger shemminger at vyatta.com
> Takayuki HAMA t-hama at cb.jp.nec.com
> Teemu Koponen koponen at nicira.com
> Vishal Swarankar vishal.swarnkar at gmail.com
> +YAMAMOTO Takashi yamamoto at valinux.co.jp
> Yongqiang Liu liuyq7809 at gmail.com
> kk yap yapkke at stanford.edu
>
> diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c
> index 4c4811b..7e9a965 100644
> --- a/lib/ofp-parse.c
> +++ b/lib/ofp-parse.c
> @@ -825,7 +825,8 @@ parse_ofp_str(struct flow_mod *fm, uint8_t *table_idx,
> } else {
> parse_field_value(&fm->cr, f->index, value);
> }
> - } else if (!strncmp(name, "reg", 3) && isdigit(name[3])) {
> + } else if (!strncmp(name, "reg", 3)
> + && isdigit((unsigned char) name[3])) {
> unsigned int reg_idx = atoi(name + 3);
> if (reg_idx >= FLOW_N_REGS) {
> ovs_fatal(0, "only %d registers supported", FLOW_N_REGS);
> diff --git a/lib/ofp-print.c b/lib/ofp-print.c
> index f5eb9ad..6560f32 100644
> --- a/lib/ofp-print.c
> +++ b/lib/ofp-print.c
> @@ -614,7 +614,7 @@ ofp_print_phy_port(struct ds *string, const struct ofp_phy_port *port)
>
> memcpy(name, port->name, sizeof name);
> for (j = 0; j < sizeof name - 1; j++) {
> - if (!isprint(name[j])) {
> + if (!isprint((unsigned char) name[j])) {
> break;
> }
> }
> --
> 1.7.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>
More information about the dev
mailing list