aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorBen Pfaff <blp@nicira.com>2011-04-15 09:31:36 -0700
committerBen Pfaff <blp@nicira.com>2011-04-29 14:31:59 -0700
commit101c55a1af7998a009a5c88c20e30837bc1a9765 (patch)
tree0d533c6538e79f233481d5afe396c237d3ef7c94 /lib
parent54ebd8ea7dfdd53e36ef4e0cd0877d52dd95a8ad (diff)
Fix calls to ctype functions.
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@valinux.co.jp>
Diffstat (limited to 'lib')
-rw-r--r--lib/ofp-parse.c3
-rw-r--r--lib/ofp-print.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c
index de7cd9c7..a3492cbc 100644
--- a/lib/ofp-parse.c
+++ b/lib/ofp-parse.c
@@ -820,7 +820,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 1cd94626..32e8e7c3 100644
--- a/lib/ofp-print.c
+++ b/lib/ofp-print.c
@@ -603,7 +603,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;
}
}