Commit 30b5c5d0 authored by Neal Norwitz's avatar Neal Norwitz

Fix SF bug #1072182, problems with signed characters.

Most of these can be backported.
parent 5d0ad50f
...@@ -1396,7 +1396,7 @@ get_version_string(void) ...@@ -1396,7 +1396,7 @@ get_version_string(void)
char *buffer; char *buffer;
int i = 0; int i = 0;
while (*rev && !isdigit((int)*rev)) while (*rev && !isdigit(Py_CHARMASK(*rev)))
++rev; ++rev;
while (rev[i] != ' ' && rev[i] != '\0') while (rev[i] != ' ' && rev[i] != '\0')
++i; ++i;
......
...@@ -636,7 +636,7 @@ Tkapp_New(char *screenName, char *baseName, char *className, ...@@ -636,7 +636,7 @@ Tkapp_New(char *screenName, char *baseName, char *className,
} }
strcpy(argv0, className); strcpy(argv0, className);
if (isupper((int)(argv0[0]))) if (isupper(Py_CHARMASK((argv0[0]))))
argv0[0] = tolower(argv0[0]); argv0[0] = tolower(argv0[0]);
Tcl_SetVar(v->interp, "argv0", argv0, TCL_GLOBAL_ONLY); Tcl_SetVar(v->interp, "argv0", argv0, TCL_GLOBAL_ONLY);
ckfree(argv0); ckfree(argv0);
......
...@@ -463,7 +463,7 @@ os2_formatmsg(char *msgbuf, int msglen, char *reason) ...@@ -463,7 +463,7 @@ os2_formatmsg(char *msgbuf, int msglen, char *reason)
if (strlen(msgbuf) > 0) { /* If Non-Empty Msg, Trim CRLF */ if (strlen(msgbuf) > 0) { /* If Non-Empty Msg, Trim CRLF */
char *lastc = &msgbuf[ strlen(msgbuf)-1 ]; char *lastc = &msgbuf[ strlen(msgbuf)-1 ];
while (lastc > msgbuf && isspace(*lastc)) while (lastc > msgbuf && isspace(Py_CHARMASK(*lastc)))
*lastc-- = '\0'; /* Trim Trailing Whitespace (CRLF) */ *lastc-- = '\0'; /* Trim Trailing Whitespace (CRLF) */
} }
......
...@@ -1803,7 +1803,7 @@ get_version_string(void) ...@@ -1803,7 +1803,7 @@ get_version_string(void)
char *rev = rcsid; char *rev = rcsid;
int i = 0; int i = 0;
while (!isdigit((int)*rev)) while (!isdigit(Py_CHARMASK(*rev)))
++rev; ++rev;
while (rev[i] != ' ' && rev[i] != '\0') while (rev[i] != ' ' && rev[i] != '\0')
++i; ++i;
......
...@@ -506,7 +506,8 @@ set_error(void) ...@@ -506,7 +506,8 @@ set_error(void)
if (strlen(outbuf) > 0) { if (strlen(outbuf) > 0) {
/* If non-empty msg, trim CRLF */ /* If non-empty msg, trim CRLF */
char *lastc = &outbuf[ strlen(outbuf)-1 ]; char *lastc = &outbuf[ strlen(outbuf)-1 ];
while (lastc > outbuf && isspace(*lastc)) { while (lastc > outbuf &&
isspace(Py_CHARMASK(*lastc))) {
/* Trim trailing whitespace (CRLF) */ /* Trim trailing whitespace (CRLF) */
*lastc-- = '\0'; *lastc-- = '\0';
} }
......
...@@ -757,7 +757,7 @@ strop_atoi(PyObject *self, PyObject *args) ...@@ -757,7 +757,7 @@ strop_atoi(PyObject *self, PyObject *args)
x = (long) PyOS_strtoul(s, &end, base); x = (long) PyOS_strtoul(s, &end, base);
else else
x = PyOS_strtol(s, &end, base); x = PyOS_strtol(s, &end, base);
if (end == s || !isalnum((int)end[-1])) if (end == s || !isalnum(Py_CHARMASK(end[-1])))
goto bad; goto bad;
while (*end && isspace(Py_CHARMASK(*end))) while (*end && isspace(Py_CHARMASK(*end)))
end++; end++;
......
...@@ -180,7 +180,8 @@ translabel(grammar *g, label *lb) ...@@ -180,7 +180,8 @@ translabel(grammar *g, label *lb)
} }
if (lb->lb_type == STRING) { if (lb->lb_type == STRING) {
if (isalpha((int)(lb->lb_str[1])) || lb->lb_str[1] == '_') { if (isalpha(Py_CHARMASK(lb->lb_str[1])) ||
lb->lb_str[1] == '_') {
char *p; char *p;
char *src; char *src;
char *dest; char *dest;
......
...@@ -229,7 +229,7 @@ get_coding_spec(const char *s, int size) ...@@ -229,7 +229,7 @@ get_coding_spec(const char *s, int size)
} while (t[0] == '\x20' || t[0] == '\t'); } while (t[0] == '\x20' || t[0] == '\t');
begin = t; begin = t;
while (isalnum((int)t[0]) || while (isalnum(Py_CHARMASK(t[0])) ||
t[0] == '-' || t[0] == '_' || t[0] == '.') t[0] == '-' || t[0] == '_' || t[0] == '.')
t++; t++;
......
...@@ -2879,7 +2879,7 @@ static PyObject * ...@@ -2879,7 +2879,7 @@ static PyObject *
parsestr(const char *s, const char *encoding) parsestr(const char *s, const char *encoding)
{ {
size_t len; size_t len;
int quote = *s; int quote = Py_CHARMASK(*s);
int rawmode = 0; int rawmode = 0;
int need_encoding; int need_encoding;
int unicode = 0; int unicode = 0;
......
...@@ -144,7 +144,7 @@ aix_loaderror(const char *pathname) ...@@ -144,7 +144,7 @@ aix_loaderror(const char *pathname)
if (nerr == load_errtab[j].errNo && load_errtab[j].errstr) if (nerr == load_errtab[j].errNo && load_errtab[j].errstr)
ERRBUF_APPEND(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(message[i]);
ERRBUF_APPEND("\n"); ERRBUF_APPEND("\n");
} }
......
...@@ -166,7 +166,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int compat) ...@@ -166,7 +166,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int compat)
if (level == 0) { if (level == 0) {
if (c == 'O') if (c == 'O')
max++; max++;
else if (isalpha(c)) { else if (isalpha(Py_CHARMASK(c))) {
if (c != 'e') /* skip encoded */ if (c != 'e') /* skip encoded */
max++; max++;
} else if (c == '|') } else if (c == '|')
...@@ -255,7 +255,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int compat) ...@@ -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 != ':' && *format != ';') { *format != '|' && *format != ':' && *format != ';') {
PyErr_Format(PyExc_SystemError, PyErr_Format(PyExc_SystemError,
...@@ -347,7 +347,7 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int *levels, ...@@ -347,7 +347,7 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int *levels,
} }
else if (c == ':' || c == ';' || c == '\0') else if (c == ':' || c == ';' || c == '\0')
break; break;
else if (level == 0 && isalpha(c)) else if (level == 0 && isalpha(Py_CHARMASK(c)))
n++; n++;
} }
...@@ -1223,7 +1223,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format, ...@@ -1223,7 +1223,7 @@ vgetargskeywords(PyObject *args, PyObject *keywords, const char *format,
min = -1; min = -1;
max = 0; max = 0;
while ((i = *format++) != '\0') { while ((i = *format++) != '\0') {
if (isalpha(i) && i != 'e') { if (isalpha(Py_CHARMASK(i)) && i != 'e') {
max++; max++;
if (*p == NULL) { if (*p == NULL) {
PyErr_SetString(PyExc_RuntimeError, PyErr_SetString(PyExc_RuntimeError,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment