Kaydet (Commit) ad3d2c2f authored tarafından Žiga Seilnacht's avatar Žiga Seilnacht

Patch #1675981: remove unreachable code from type.__new__() method.

__dict__ and __weakref__ are removed from the slots tuple earlier
in the code, in the loop that mangles slot names.
 (backport from rev. 54270)
üst d28d9c82
......@@ -12,6 +12,8 @@ What's New in Python 2.5.1c1?
Core and builtins
-----------------
- Patch #1675981: remove unreachable code from ``type.__new__()`` method.
- Patch #1638879: don't accept strings with embedded NUL bytes in long().
- Bug #1674503: close the file opened by execfile() in an error condition.
......
......@@ -1935,13 +1935,11 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds)
PyTuple_GET_ITEM(slots, i));
mp->type = T_OBJECT_EX;
mp->offset = slotoffset;
if (base->tp_weaklistoffset == 0 &&
strcmp(mp->name, "__weakref__") == 0) {
add_weak++;
mp->type = T_OBJECT;
mp->flags = READONLY;
type->tp_weaklistoffset = slotoffset;
}
/* __dict__ and __weakref__ are already filtered out */
assert(strcmp(mp->name, "__dict__") != 0);
assert(strcmp(mp->name, "__weakref__") != 0);
slotoffset += sizeof(PyObject *);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment