Fix SF bug #1072182, problems with signed characters.

Most of these can be backported.
This commit is contained in:
Neal Norwitz 2005-12-19 06:05:18 +00:00
parent 5d0ad50f5a
commit 30b5c5d011
11 changed files with 16 additions and 14 deletions

View file

@ -2879,7 +2879,7 @@ static PyObject *
parsestr(const char *s, const char *encoding)
{
size_t len;
int quote = *s;
int quote = Py_CHARMASK(*s);
int rawmode = 0;
int need_encoding;
int unicode = 0;

View file

@ -144,7 +144,7 @@ aix_loaderror(const char *pathname)
if (nerr == load_errtab[j].errNo && load_errtab[j].errstr)
ERRBUF_APPEND(load_errtab[j].errstr);
}
while (isdigit(*message[i])) message[i]++ ;
while (isdigit(Py_CHARMASK(*message[i]))) message[i]++ ;
ERRBUF_APPEND(message[i]);
ERRBUF_APPEND("\n");
}

View file

@ -166,7 +166,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int compat)
if (level == 0) {
if (c == 'O')
max++;
else if (isalpha(c)) {
else if (isalpha(Py_CHARMASK(c))) {
if (c != 'e') /* skip encoded */
max++;
} else if (c == '|')
@ -255,7 +255,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int compat)
}
}
if (*format != '\0' && !isalpha((int)(*format)) &&
if (*format != '\0' && !isalpha(Py_CHARMASK((*format))) &&
*format != '(' &&
*format != '|' && *format != ':' && *format != ';') {
PyErr_Format(PyExc_SystemError,
@ -347,7 +347,7 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int *levels,
}
else if (c == ':' || c == ';' || c == '\0')
break;
else if (level == 0 && isalpha(c))
else if (level == 0 && isalpha(Py_CHARMASK(c)))
n++;
}
@ -1223,7 +1223,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
min = -1;
max = 0;
while ((i = *format++) != '\0') {
if (isalpha(i) && i != 'e') {
if (isalpha(Py_CHARMASK(i)) && i != 'e') {
max++;
if (*p == NULL) {
PyErr_SetString(PyExc_RuntimeError,