From: Georg Brandl Date: Thu, 30 Aug 2007 18:29:48 +0000 (+0000) Subject: Fix #1753395. X-Git-Tag: v3.0a1~67 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f4780d03d540ebc4bc5eec6754d23bb00b2329c8;p=thirdparty%2FPython%2Fcpython.git Fix #1753395. --- diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 9bd920203ab3..0cc63fc2b5c0 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1561,28 +1561,16 @@ static PyGetSetDef subtype_getsets_weakref_only[] = { static int valid_identifier(PyObject *s) { - Py_UNICODE *p; - Py_ssize_t i, n; - if (!PyUnicode_Check(s)) { PyErr_Format(PyExc_TypeError, "__slots__ items must be strings, not '%.200s'", Py_Type(s)->tp_name); return 0; } - p = PyUnicode_AS_UNICODE(s); - n = PyUnicode_GET_SIZE(s); - /* We must reject an empty name. As a hack, we bump the - length to 1 so that the loop will balk on the trailing \0. */ - if (n == 0) - n = 1; - for (i = 0; i < n; i++, p++) { - if (*p > 127 || - (!(i == 0 ? isalpha(*p) : isalnum(*p)) && *p != '_')) { - PyErr_SetString(PyExc_TypeError, - "__slots__ must be identifiers"); - return 0; - } + if (!PyUnicode_IsIdentifier(s)) { + PyErr_SetString(PyExc_TypeError, + "__slots__ must be identifiers"); + return 0; } return 1; }