Issue #9020: The Py_IS* macros from pyctype.h should generally only be
used with signed/unsigned char arguments. For integer arguments, EOF has to be handled separately.
This commit is contained in:
parent
947ce58a90
commit
3db4161011
|
@ -11,6 +11,9 @@
|
||||||
|
|
||||||
extern const unsigned int _Py_ctype_table[256];
|
extern const unsigned int _Py_ctype_table[256];
|
||||||
|
|
||||||
|
/* Unlike their C counterparts, the following macros are not meant to
|
||||||
|
* handle an int with any of the values [EOF, 0-UCHAR_MAX]. The argument
|
||||||
|
* must be a signed/unsigned char. */
|
||||||
#define Py_ISLOWER(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_LOWER)
|
#define Py_ISLOWER(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_LOWER)
|
||||||
#define Py_ISUPPER(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_UPPER)
|
#define Py_ISUPPER(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_UPPER)
|
||||||
#define Py_ISALPHA(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
|
#define Py_ISALPHA(c) (_Py_ctype_table[Py_CHARMASK(c)] & PY_CTF_ALPHA)
|
||||||
|
|
|
@ -1365,7 +1365,7 @@ tok_get(register struct tok_state *tok, char **p_start, char **p_end)
|
||||||
goto letter_quote;
|
goto letter_quote;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
while (Py_ISALNUM(c) || c == '_') {
|
while (c != EOF && (Py_ISALNUM(c) || c == '_')) {
|
||||||
c = tok_nextc(tok);
|
c = tok_nextc(tok);
|
||||||
}
|
}
|
||||||
tok_backup(tok, c);
|
tok_backup(tok, c);
|
||||||
|
|
Loading…
Reference in New Issue