ref: e33a57b703f11de067a400505e2425de3a0b5f9e
parent: 8ac92e860769b822300115064d090cff0645c7dd
author: Simon Tatham <anakin@pobox.com>
date: Sun Jul 17 13:10:11 EDT 2005
Quite a few instances of the Cardinal Error of Ctype were turned up by a grep I just did. Oops. [originally from svn r6113]
--- a/cube.c
+++ b/cube.c
@@ -285,7 +285,7 @@
default: break;
}
ret->d1 = ret->d2 = atoi(string);
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
if (*string == 'x') {
string++;
ret->d2 = atoi(string);
--- a/fifteen.c
+++ b/fifteen.c
@@ -76,7 +76,7 @@
static void decode_params(game_params *ret, char const *string)
{
ret->w = ret->h = atoi(string);
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
if (*string == 'x') {
string++;
ret->h = atoi(string);
--- a/flip.c
+++ b/flip.c
@@ -116,11 +116,11 @@
static void decode_params(game_params *ret, char const *string)
{
ret->w = ret->h = atoi(string);
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
if (*string == 'x') {
string++;
ret->h = atoi(string);
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
}
if (*string == 'r') {
string++;
--- a/netslide.c
+++ b/netslide.c
@@ -213,16 +213,16 @@
ret->movetarget = 0;
ret->width = atoi(p);
- while (*p && isdigit(*p)) p++;
+ while (*p && isdigit((unsigned char)*p)) p++;
if (*p == 'x') {
p++;
ret->height = atoi(p);
- while (*p && isdigit(*p)) p++;
+ while (*p && isdigit((unsigned char)*p)) p++;
if ( (ret->wrapping = (*p == 'w')) != 0 )
p++;
if (*p == 'b') {
ret->barrier_probability = atof(++p);
- while (*p && (isdigit(*p) || *p == '.')) p++;
+ while (*p && (isdigit((unsigned char)*p) || *p == '.')) p++;
}
if (*p == 'm') {
ret->movetarget = atoi(++p);
--- a/pattern.c
+++ b/pattern.c
@@ -106,11 +106,11 @@
char const *p = string;
ret->w = atoi(p);
- while (*p && isdigit(*p)) p++;
+ while (*p && isdigit((unsigned char)*p)) p++;
if (*p == 'x') {
p++;
ret->h = atoi(p);
- while (*p && isdigit(*p)) p++;
+ while (*p && isdigit((unsigned char)*p)) p++;
} else {
ret->h = ret->w;
}
--- a/samegame.c
+++ b/samegame.c
@@ -291,9 +291,9 @@
char *q = p;
int n;
- if (!isdigit(*p))
+ if (!isdigit((unsigned char)*p))
return "Not enough numbers in string";
- while (isdigit(*p)) p++;
+ while (isdigit((unsigned char)*p)) p++;
if (i < area-1 && *p != ',')
return "Expected comma after number";
--- a/sixteen.c
+++ b/sixteen.c
@@ -100,7 +100,7 @@
{
ret->w = ret->h = atoi(string);
ret->movetarget = 0;
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
if (*string == 'x') {
string++;
ret->h = atoi(string);
--- a/twiddle.c
+++ b/twiddle.c
@@ -108,16 +108,16 @@
ret->n = 2;
ret->rowsonly = ret->orientable = FALSE;
ret->movetarget = 0;
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
if (*string == 'x') {
string++;
ret->h = atoi(string);
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
}
if (*string == 'n') {
string++;
ret->n = atoi(string);
- while (*string && isdigit(*string)) string++;
+ while (*string && isdigit((unsigned char)*string)) string++;
}
while (*string) {
if (*string == 'r') {
@@ -127,7 +127,7 @@
} else if (*string == 'm') {
string++;
ret->movetarget = atoi(string);
- while (string[1] && isdigit(string[1])) string++;
+ while (string[1] && isdigit((unsigned char)string[1])) string++;
}
string++;
}
--- a/windows.c
+++ b/windows.c
@@ -1690,7 +1690,7 @@
RegisterClass(&wndclass);
}
- while (*cmdline && isspace(*cmdline))
+ while (*cmdline && isspace((unsigned char)*cmdline))
cmdline++;
if (!new_window(inst, *cmdline ? cmdline : NULL, &error)) {