[Python-checkins] cpython (2.7): Issue #23629: Fix the default __sizeof__ implementation for variable-sized
antoine.pitrou
python-checkins at python.org
Tue Mar 10 22:41:27 CET 2015
https://hg.python.org/cpython/rev/dbd48b22b477
changeset: 94939:dbd48b22b477
branch: 2.7
parent: 94933:7c4c4e43c452
user: Antoine Pitrou <solipsis at pitrou.net>
date: Tue Mar 10 22:32:00 2015 +0100
summary:
Issue #23629: Fix the default __sizeof__ implementation for variable-sized objects.
files:
Misc/NEWS | 3 +++
Objects/tupleobject.c | 12 ------------
Objects/typeobject.c | 2 +-
3 files changed, 4 insertions(+), 13 deletions(-)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
Core and Builtins
-----------------
+- Issue #23629: Fix the default __sizeof__ implementation for variable-sized
+ objects.
+
- Issue #23055: Fixed a buffer overflow in PyUnicode_FromFormatV. Analysis
and fix by Guido Vranken.
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -761,27 +761,15 @@
}
-static PyObject *
-tuple_sizeof(PyTupleObject *self)
-{
- Py_ssize_t res;
-
- res = PyTuple_Type.tp_basicsize + Py_SIZE(self) * sizeof(PyObject *);
- return PyInt_FromSsize_t(res);
-}
-
PyDoc_STRVAR(index_doc,
"T.index(value, [start, [stop]]) -> integer -- return first index of value.\n"
"Raises ValueError if the value is not present."
);
PyDoc_STRVAR(count_doc,
"T.count(value) -> integer -- return number of occurrences of value");
-PyDoc_STRVAR(sizeof_doc,
-"T.__sizeof__() -- size of T in memory, in bytes");
static PyMethodDef tuple_methods[] = {
{"__getnewargs__", (PyCFunction)tuple_getnewargs, METH_NOARGS},
- {"__sizeof__", (PyCFunction)tuple_sizeof, METH_NOARGS, sizeof_doc},
{"index", (PyCFunction)tupleindex, METH_VARARGS, index_doc},
{"count", (PyCFunction)tuplecount, METH_O, count_doc},
{NULL, NULL} /* sentinel */
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -3507,7 +3507,7 @@
res = 0;
isize = self->ob_type->tp_itemsize;
if (isize > 0)
- res = self->ob_type->ob_size * isize;
+ res = Py_SIZE(self) * isize;
res += self->ob_type->tp_basicsize;
return PyInt_FromSsize_t(res);
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list