summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/regexmodule.c4
-rw-r--r--Modules/stropmodule.c24
-rw-r--r--Python/ceval.c3
-rw-r--r--Python/compile.c4
-rw-r--r--Python/mystrtoul.c14
5 files changed, 27 insertions, 22 deletions
diff --git a/Modules/regexmodule.c b/Modules/regexmodule.c
index b9f75a0..9b40ab5 100644
--- a/Modules/regexmodule.c
+++ b/Modules/regexmodule.c
@@ -35,7 +35,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "modsupport.h"
#include "regexpr.h"
-#include "ctype.h"
+#include <ctype.h>
static object *RegexError; /* Exception */
@@ -433,7 +433,7 @@ symcomp(pattern, gdict)
++o; /* eat the '>' */
break;
}
- if (!isalnum(*o) && *o != '_') {
+ if (!isalnum(Py_CHARMASK(*o)) && *o != '_') {
o = backtrack;
break;
}
diff --git a/Modules/stropmodule.c b/Modules/stropmodule.c
index 326dfb8..90ee4fd 100644
--- a/Modules/stropmodule.c
+++ b/Modules/stropmodule.c
@@ -41,7 +41,6 @@ strop_split(self, args)
{
int len, i, j, err;
char *s;
- char c;
object *list, *item;
if (!getargs(args, "s#", &s, &len))
@@ -52,13 +51,11 @@ strop_split(self, args)
i = 0;
while (i < len) {
- while (i < len &&
- ((c = s[i]), isspace(c))) {
+ while (i < len && isspace(Py_CHARMASK(s[i]))) {
i = i+1;
}
j = i;
- while (i < len &&
- !((c = s[i]), isspace(c))) {
+ while (i < len && isspace(Py_CHARMASK(s[i]))) {
i = i+1;
}
if (j < i) {
@@ -269,20 +266,19 @@ strop_strip(self, args)
{
char *s;
int len, i, j;
- char c;
if (!getargs(args, "s#", &s, &len))
return NULL;
i = 0;
- while (i < len && ((c = s[i]), isspace(c))) {
+ while (i < len && isspace(Py_CHARMASK(s[i]))) {
i++;
}
j = len;
do {
j--;
- } while (j >= i && ((c = s[j]), isspace(c)));
+ } while (j >= i && isspace(Py_CHARMASK(s[i])));
j++;
if (i == 0 && j == len) {
@@ -312,7 +308,7 @@ strop_lower(self, args)
s_new = getstringvalue(new);
changed = 0;
for (i = 0; i < n; i++) {
- char c = *s++;
+ int c = Py_CHARMASK(*s++);
if (isupper(c)) {
changed = 1;
*s_new = tolower(c);
@@ -347,7 +343,7 @@ strop_upper(self, args)
s_new = getstringvalue(new);
changed = 0;
for (i = 0; i < n; i++) {
- char c = *s++;
+ int c = Py_CHARMASK(*s++);
if (islower(c)) {
changed = 1;
*s_new = toupper(c);
@@ -382,7 +378,7 @@ strop_swapcase(self, args)
s_new = getstringvalue(new);
changed = 0;
for (i = 0; i < n; i++) {
- char c = *s++;
+ int c = Py_CHARMASK(*s++);
if (islower(c)) {
changed = 1;
*s_new = toupper(c);
@@ -530,7 +526,7 @@ initstrop()
/* Create 'whitespace' object */
n = 0;
- for (c = 1; c < 256; c++) {
+ for (c = 0; c < 256; c++) {
if (isspace(c))
buf[n++] = c;
}
@@ -541,7 +537,7 @@ initstrop()
}
/* Create 'lowercase' object */
n = 0;
- for (c = 1; c < 256; c++) {
+ for (c = 0; c < 256; c++) {
if (islower(c))
buf[n++] = c;
}
@@ -553,7 +549,7 @@ initstrop()
/* Create 'uppercase' object */
n = 0;
- for (c = 1; c < 256; c++) {
+ for (c = 0; c < 256; c++) {
if (isupper(c))
buf[n++] = c;
}
diff --git a/Python/ceval.c b/Python/ceval.c
index 48fce5b..411e7f3 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -753,7 +753,8 @@ eval_code(co, globals, locals, owner, arg)
/* XXX move into writeobject() ? */
char *s = getstringvalue(v);
int len = getstringsize(v);
- if (len > 0 && isspace(s[len-1]) &&
+ if (len > 0 &&
+ isspace(Py_CHARMASK(s[len-1])) &&
s[len-1] != ' ')
softspace(w, 0);
}
diff --git a/Python/compile.c b/Python/compile.c
index 45bed39..cb25da2 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -608,12 +608,12 @@ parsestr(s)
*p++ = c;
break;
case 'x':
- if (isxdigit(*s)) {
+ if (isxdigit(Py_CHARMASK(*s))) {
sscanf(s, "%x", &c);
*p++ = c;
do {
s++;
- } while (isxdigit(*s));
+ } while (isxdigit(Py_CHARMASK(*s)));
break;
}
/* FALLTHROUGH */
diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c
index e7c0a57..a646283 100644
--- a/Python/mystrtoul.c
+++ b/Python/mystrtoul.c
@@ -26,6 +26,14 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "config.h"
#endif
+/* Convert a possibly signed character to a nonnegative int */
+/* XXX This assumes characters are 8 bits wide */
+#ifdef __CHAR_UNSIGNED__
+#define Py_CHARMASK(c) (c)
+#else
+#define Py_CHARMASK(c) ((c) & 0xff)
+#endif
+
#include "rename2.h"
/* strtol and strtoul, renamed to avoid conflicts */
@@ -70,7 +78,7 @@ int base;
}
/* skip leading white space */
- while (*str && isspace(*str))
+ while (*str && isspace(Py_CHARMASK(*str)))
str++;
/* check for leading 0 or 0x for auto-base or base 16 */
@@ -99,7 +107,7 @@ int base;
}
/* do the conversion */
- while (c = *str)
+ while (c = Py_CHARMASK(*str))
{
if (isdigit(c) && c - '0' < base)
c -= '0';
@@ -143,7 +151,7 @@ int base;
long result;
char sign;
- while (*str && isspace(*str))
+ while (*str && isspace(Py_CHARMASK(*str)))
str++;
sign = *str;