diff options
| -rw-r--r-- | Misc/NEWS | 3 | ||||
| -rw-r--r-- | Modules/_struct.c | 4 | ||||
| -rw-r--r-- | Modules/binascii.c | 2 | ||||
| -rw-r--r-- | Modules/posixmodule.c | 2 | ||||
| -rw-r--r-- | Modules/socketmodule.c | 2 | ||||
| -rw-r--r-- | Objects/longobject.c | 4 | ||||
| -rw-r--r-- | Objects/stringlib/formatter.h | 2 | ||||
| -rw-r--r-- | Python/ast.c | 2 | ||||
| -rw-r--r-- | Python/dynload_aix.c | 3 | ||||
| -rw-r--r-- | Python/getargs.c | 6 | ||||
| -rw-r--r-- | Python/mystrtoul.c | 6 | 
11 files changed, 19 insertions, 17 deletions
@@ -10,6 +10,9 @@ What's New in Python 3.2.4  Core and Builtins  ----------------- +- Issue #17173: Remove uses of locale-dependent C functions (isalpha() etc.) +  in the interpreter. +  - Issue #17043: The unicode-internal decoder no longer read past the end of    input buffer. diff --git a/Modules/_struct.c b/Modules/_struct.c index edbe9b9884..3f20518d9f 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -1184,7 +1184,7 @@ prepare_s(PyStructObject *self)      size = 0;      len = 0;      while ((c = *s++) != '\0') { -        if (isspace(Py_CHARMASK(c))) +        if (Py_ISSPACE(Py_CHARMASK(c)))              continue;          if ('0' <= c && c <= '9') {              num = c - '0'; @@ -1249,7 +1249,7 @@ prepare_s(PyStructObject *self)      s = fmt;      size = 0;      while ((c = *s++) != '\0') { -        if (isspace(Py_CHARMASK(c))) +        if (Py_ISSPACE(Py_CHARMASK(c)))              continue;          if ('0' <= c && c <= '9') {              num = c - '0'; diff --git a/Modules/binascii.c b/Modules/binascii.c index 19681b415c..74db73955e 100644 --- a/Modules/binascii.c +++ b/Modules/binascii.c @@ -1099,7 +1099,7 @@ This function is also available as \"hexlify()\".");  static int  to_int(int c)  { -    if (isdigit(c)) +    if (Py_ISDIGIT(c))          return c - '0';      else {          if (Py_ISUPPER(c)) diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c index 4179c0ef07..67bff25980 100644 --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -695,7 +695,7 @@ os2_formatmsg(char *msgbuf, int msglen, char *reason)      if (strlen(msgbuf) > 0) { /* If Non-Empty Msg, Trim CRLF */          char *lastc = &msgbuf[ strlen(msgbuf)-1 ]; -        while (lastc > msgbuf && isspace(Py_CHARMASK(*lastc))) +        while (lastc > msgbuf && Py_ISSPACE(Py_CHARMASK(*lastc)))              *lastc-- = '\0'; /* Trim Trailing Whitespace (CRLF) */      } diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index bc3372f3e8..e027625024 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -519,7 +519,7 @@ set_error(void)                  /* If non-empty msg, trim CRLF */                  char *lastc = &outbuf[ strlen(outbuf)-1 ];                  while (lastc > outbuf && -                       isspace(Py_CHARMASK(*lastc))) { +                       Py_ISSPACE(Py_CHARMASK(*lastc))) {                      /* Trim trailing whitespace (CRLF) */                      *lastc-- = '\0';                  } diff --git a/Objects/longobject.c b/Objects/longobject.c index 9ca7b6506e..e2a4ef9c5e 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -1887,7 +1887,7 @@ PyLong_FromString(char *str, char **pend, int base)                          "int() arg 2 must be >= 2 and <= 36");          return NULL;      } -    while (*str != '\0' && isspace(Py_CHARMASK(*str))) +    while (*str != '\0' && Py_ISSPACE(Py_CHARMASK(*str)))          str++;      if (*str == '+')          ++str; @@ -2131,7 +2131,7 @@ digit beyond the first.          goto onError;      if (sign < 0)          Py_SIZE(z) = -(Py_SIZE(z)); -    while (*str && isspace(Py_CHARMASK(*str))) +    while (*str && Py_ISSPACE(Py_CHARMASK(*str)))          str++;      if (*str != '\0')          goto onError; diff --git a/Objects/stringlib/formatter.h b/Objects/stringlib/formatter.h index 139b56cd8e..be0d897a91 100644 --- a/Objects/stringlib/formatter.h +++ b/Objects/stringlib/formatter.h @@ -414,7 +414,7 @@ parse_number(STRINGLIB_CHAR *ptr, Py_ssize_t len,      STRINGLIB_CHAR *end = ptr + len;      STRINGLIB_CHAR *remainder; -    while (ptr<end && isdigit(*ptr)) +    while (ptr<end && Py_ISDIGIT(*ptr))          ++ptr;      remainder = ptr; diff --git a/Python/ast.c b/Python/ast.c index d2f063bb5b..e395c5aa78 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -3305,7 +3305,7 @@ parsestr(struct compiling *c, const node *n, int *bytesmode)      int quote = Py_CHARMASK(*s);      int rawmode = 0;      int need_encoding; -    if (isalpha(quote)) { +    if (Py_ISALPHA(quote)) {          if (quote == 'b' || quote == 'B') {              quote = *++s;              *bytesmode = 1; diff --git a/Python/dynload_aix.c b/Python/dynload_aix.c index 149990d799..b025cd357d 100644 --- a/Python/dynload_aix.c +++ b/Python/dynload_aix.c @@ -4,7 +4,6 @@  #include "Python.h"  #include "importdl.h" -#include <ctype.h>      /*  for isdigit()         */  #include <errno.h>      /*  for global errno      */  #include <string.h>     /*  for strerror()        */  #include <stdlib.h>     /*  for malloc(), free()  */ @@ -144,7 +143,7 @@ aix_loaderror(const char *pathname)              if (nerr == load_errtab[j].errNo && load_errtab[j].errstr)              ERRBUF_APPEND(load_errtab[j].errstr);          } -        while (isdigit(Py_CHARMASK(*message[i]))) message[i]++ ; +        while (Py_ISDIGIT(Py_CHARMASK(*message[i]))) message[i]++ ;          ERRBUF_APPEND(message[i]);          ERRBUF_APPEND("\n");      } diff --git a/Python/getargs.c b/Python/getargs.c index a77bb05529..d588102e8b 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -288,7 +288,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)              if (level == 0) {                  if (c == 'O')                      max++; -                else if (isalpha(Py_CHARMASK(c))) { +                else if (Py_ISALPHA(Py_CHARMASK(c))) {                      if (c != 'e') /* skip encoded */                          max++;                  } else if (c == '|') @@ -378,7 +378,7 @@ vgetargs1(PyObject *args, const char *format, va_list *p_va, int flags)          }      } -    if (*format != '\0' && !isalpha(Py_CHARMASK(*format)) && +    if (*format != '\0' && !Py_ISALPHA(Py_CHARMASK(*format)) &&          *format != '(' &&          *format != '|' && *format != ':' && *format != ';') {          PyErr_Format(PyExc_SystemError, @@ -471,7 +471,7 @@ converttuple(PyObject *arg, const char **p_format, va_list *p_va, int flags,          }          else if (c == ':' || c == ';' || c == '\0')              break; -        else if (level == 0 && isalpha(Py_CHARMASK(c))) +        else if (level == 0 && Py_ISALPHA(Py_CHARMASK(c)))              n++;      } diff --git a/Python/mystrtoul.c b/Python/mystrtoul.c index 52502cba46..8a54cbf403 100644 --- a/Python/mystrtoul.c +++ b/Python/mystrtoul.c @@ -99,7 +99,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)      register int ovlimit;       /* required digits to overflow */      /* skip leading white space */ -    while (*str && isspace(Py_CHARMASK(*str))) +    while (*str && Py_ISSPACE(Py_CHARMASK(*str)))          ++str;      /* check for leading 0b, 0o or 0x for auto-base or base 16 */ @@ -138,7 +138,7 @@ PyOS_strtoul(register char *str, char **ptr, int base)                  /* skip all zeroes... */                  while (*str == '0')                      ++str; -                while (isspace(Py_CHARMASK(*str))) +                while (Py_ISSPACE(Py_CHARMASK(*str)))                      ++str;                  if (ptr)                      *ptr = str; @@ -266,7 +266,7 @@ PyOS_strtol(char *str, char **ptr, int base)      unsigned long uresult;      char sign; -    while (*str && isspace(Py_CHARMASK(*str))) +    while (*str && Py_ISSPACE(Py_CHARMASK(*str)))          str++;      sign = *str;  | 
