summaryrefslogtreecommitdiffstats
path: root/Objects/odictobject.c
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-12-22 06:16:18 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-12-22 06:16:18 (GMT)
commit0ce7a3a34cec0e625f63d46390a8c1d2e167494f (patch)
treeb4de6a4570fc14109dcc2b2c4f5adc2b3be8d2af /Objects/odictobject.c
parent5af856404afc1b1e6b9dd4ac86a5771a407cbc6a (diff)
downloadcpython-0ce7a3a34cec0e625f63d46390a8c1d2e167494f.zip
cpython-0ce7a3a34cec0e625f63d46390a8c1d2e167494f.tar.gz
cpython-0ce7a3a34cec0e625f63d46390a8c1d2e167494f.tar.bz2
Issue #25914: Fixed and simplified OrderedDict.__sizeof__.
Diffstat (limited to 'Objects/odictobject.c')
-rw-r--r--Objects/odictobject.c22
1 files changed, 1 insertions, 21 deletions
diff --git a/Objects/odictobject.c b/Objects/odictobject.c
index 4e51f4d..c15b408 100644
--- a/Objects/odictobject.c
+++ b/Objects/odictobject.c
@@ -940,27 +940,7 @@ PyDoc_STRVAR(odict_sizeof__doc__, "");
static PyObject *
odict_sizeof(PyODictObject *od)
{
- PyObject *pylong;
- Py_ssize_t res, temp;
-
- pylong = _PyDict_SizeOf((PyDictObject *)od);
- if (pylong == NULL)
- return NULL;
- res = PyLong_AsSsize_t(pylong);
- Py_DECREF(pylong);
- if (res == -1 && PyErr_Occurred())
- return NULL;
-
- /* instance dict */
- pylong = _PyDict_SizeOf((PyDictObject *)od->od_inst_dict);
- if (pylong == NULL)
- return NULL;
- temp = PyLong_AsSsize_t(pylong);
- Py_DECREF(pylong);
- if (temp == -1 && PyErr_Occurred())
- return NULL;
- res += temp;
-
+ Py_ssize_t res = _PyDict_SizeOf((PyDictObject *)od);
res += sizeof(_ODictNode *) * _odict_FAST_SIZE(od); /* od_fast_nodes */
if (!_odict_EMPTY(od)) {
res += sizeof(_ODictNode) * PyODict_SIZE(od); /* linked-list */