[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