[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

AltStyle によって変換されたページ (->オリジナル) /