mirror of
https://github.com/python/cpython.git
synced 2024-11-27 11:55:13 +08:00
merge 3.2 (#14334)
This commit is contained in:
commit
de394543b4
@ -4400,6 +4400,9 @@ order (MRO) for bases """
|
||||
|
||||
self.assertRaises(AttributeError, getattr, EvilGetattribute(), "attr")
|
||||
|
||||
def test_type___getattribute__(self):
|
||||
self.assertRaises(TypeError, type.__getattribute__, list, type)
|
||||
|
||||
def test_abstractmethods(self):
|
||||
# type pretends not to have __abstractmethods__.
|
||||
self.assertRaises(AttributeError, getattr, type, "__abstractmethods__")
|
||||
|
@ -12,6 +12,9 @@ Core and Builtins
|
||||
|
||||
- Give the ast.AST class a __dict__.
|
||||
|
||||
- Issue #14334: Prevent in a segfault in type.__getattribute__ when it was not
|
||||
passed strings.
|
||||
|
||||
- Issue #1469629: Allow cycles through an object's __dict__ slot to be
|
||||
collected. (For example if ``x.__dict__ is x``).
|
||||
|
||||
|
@ -2486,6 +2486,13 @@ type_getattro(PyTypeObject *type, PyObject *name)
|
||||
PyObject *meta_attribute, *attribute;
|
||||
descrgetfunc meta_get;
|
||||
|
||||
if (!PyUnicode_Check(name)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"attribute name must be string, not '%.200s'",
|
||||
name->ob_type->tp_name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Initialize this type (we'll assume the metatype is initialized) */
|
||||
if (type->tp_dict == NULL) {
|
||||
if (PyType_Ready(type) < 0)
|
||||
|
Loading…
Reference in New Issue
Block a user