mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
Issue #25421: __sizeof__ methods of builtin types now use dynamic basic size.
This allows sys.getsize() to work correctly with their subclasses with __slots__ defined.
This commit is contained in:
commit
a9406e77fa
19 changed files with 54 additions and 22 deletions
|
|
@ -2109,7 +2109,7 @@ product_sizeof(productobject *lz, void *unused)
|
|||
{
|
||||
Py_ssize_t res;
|
||||
|
||||
res = sizeof(productobject);
|
||||
res = _PyObject_SIZE(Py_TYPE(lz));
|
||||
res += PyTuple_GET_SIZE(lz->pools) * sizeof(Py_ssize_t);
|
||||
return PyLong_FromSsize_t(res);
|
||||
}
|
||||
|
|
@ -2440,7 +2440,7 @@ combinations_sizeof(combinationsobject *co, void *unused)
|
|||
{
|
||||
Py_ssize_t res;
|
||||
|
||||
res = sizeof(combinationsobject);
|
||||
res = _PyObject_SIZE(Py_TYPE(co));
|
||||
res += co->r * sizeof(Py_ssize_t);
|
||||
return PyLong_FromSsize_t(res);
|
||||
}
|
||||
|
|
@ -2781,7 +2781,7 @@ cwr_sizeof(cwrobject *co, void *unused)
|
|||
{
|
||||
Py_ssize_t res;
|
||||
|
||||
res = sizeof(cwrobject);
|
||||
res = _PyObject_SIZE(Py_TYPE(co));
|
||||
res += co->r * sizeof(Py_ssize_t);
|
||||
return PyLong_FromSsize_t(res);
|
||||
}
|
||||
|
|
@ -3129,7 +3129,7 @@ permutations_sizeof(permutationsobject *po, void *unused)
|
|||
{
|
||||
Py_ssize_t res;
|
||||
|
||||
res = sizeof(permutationsobject);
|
||||
res = _PyObject_SIZE(Py_TYPE(po));
|
||||
res += PyTuple_GET_SIZE(po->pool) * sizeof(Py_ssize_t);
|
||||
res += po->r * sizeof(Py_ssize_t);
|
||||
return PyLong_FromSsize_t(res);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue