diff -r 3d440ae207d9 Objects/codeobject.c --- a/Objects/codeobject.c Mon Oct 03 11:16:17 2016 -0700 +++ b/Objects/codeobject.c Mon Oct 03 22:16:30 2016 +0300 @@ -21,7 +21,7 @@ all_name_chars(PyObject *o) static char ok_name_char[256]; static unsigned char *name_chars = (unsigned char *)NAME_CHARS; PyUnicodeObject *u = (PyUnicodeObject *)o; - const unsigned char *s; + const unsigned char *s, *e; if (!PyUnicode_Check(o) || PyUnicode_READY(u) == -1 || PyUnicode_MAX_CHAR_VALUE(u) >= 128) @@ -33,7 +33,8 @@ all_name_chars(PyObject *o) ok_name_char[*p] = 1; } s = PyUnicode_1BYTE_DATA(u); - while (*s) { + e = s + PyUnicode_GET_LENGTH(u); + while (s != e) { if (ok_name_char[*s++] == 0) return 0; }