Issue #15696: Add a __sizeof__ implementation for mmap objects on Windows.

This commit is contained in:
Serhiy Storchaka 2014-08-19 17:11:20 +03:00
parent d6ec309c36
commit 76b47655ff
3 changed files with 28 additions and 1 deletions

View file

@ -709,6 +709,19 @@ mmap__exit__method(PyObject *self, PyObject *args)
return _PyObject_CallMethodId(self, &PyId_close, NULL);
}
#ifdef MS_WINDOWS
static PyObject *
mmap__sizeof__method(mmap_object *self, void *unused)
{
Py_ssize_t res;
res = sizeof(mmap_object);
if (self->tagname)
res += strlen(self->tagname) + 1;
return PyLong_FromSsize_t(res);
}
#endif
static struct PyMethodDef mmap_object_methods[] = {
{"close", (PyCFunction) mmap_close_method, METH_NOARGS},
{"find", (PyCFunction) mmap_find_method, METH_VARARGS},
@ -726,6 +739,9 @@ static struct PyMethodDef mmap_object_methods[] = {
{"write_byte", (PyCFunction) mmap_write_byte_method, METH_VARARGS},
{"__enter__", (PyCFunction) mmap__enter__method, METH_NOARGS},
{"__exit__", (PyCFunction) mmap__exit__method, METH_VARARGS},
#ifdef MS_WINDOWS
{"__sizeof__", (PyCFunction) mmap__sizeof__method, METH_NOARGS},
#endif
{NULL, NULL} /* sentinel */
};