Commit 0d1b1335 authored by Jesus Cea's avatar Jesus Cea

Closes #15514: Correct __sizeof__ support for cpu_set

parent 5f1efe45
......@@ -1008,6 +1008,12 @@ class PosixTester(unittest.TestCase):
self.assertIs(b, l)
self.assertEqual(l.count(), 3)
@requires_sched_affinity
@support.cpython_only
def test_cpu_set_sizeof(self):
self.assertGreater(sys.getsizeof(posix.cpu_set(1000)),
sys.getsizeof(posix.cpu_set(1)))
def test_rtld_constants(self):
# check presence of major RTLD_* constants
posix.RTLD_LAZY
......
......@@ -373,6 +373,9 @@ Library
- Issue #15487: Add a __sizeof__ implementation for buffered I/O objects.
Patch by Serhiy Storchaka.
- Issue #15514: Correct __sizeof__ support for cpu_set.
Patch by Serhiy Storchaka.
- Issue #15187: Bugfix: remove temporary directories test_shutil was leaving
behind.
......
......@@ -5772,6 +5772,20 @@ cpu_set_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
return (PyObject *)make_new_cpu_set(type, size);
}
PyDoc_STRVAR(cpu_set_sizeof_doc,
"cpu_set.__sizeof__() -> int\n\n\
Returns size in memory, in bytes.");
static PyObject *
cpu_set_sizeof(Py_cpu_set *set, PyObject *noargs)
{
Py_ssize_t res = 0;
res = sizeof(Py_cpu_set);
res += set->size;
return PyLong_FromSsize_t(res);
}
static PyObject *
cpu_set_repr(Py_cpu_set *set)
{
......@@ -5959,6 +5973,7 @@ static PyMethodDef cpu_set_methods[] = {
{"isset", (PyCFunction)cpu_set_isset, METH_VARARGS, cpu_set_isset_doc},
{"set", (PyCFunction)cpu_set_set, METH_VARARGS, cpu_set_set_doc},
{"zero", (PyCFunction)cpu_set_zero, METH_NOARGS, cpu_set_zero_doc},
{"__sizeof__", (PyCFunction)cpu_set_sizeof, METH_NOARGS, cpu_set_sizeof_doc},
{NULL, NULL} /* sentinel */
};
......
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