summaryrefslogtreecommitdiffstats
path: root/Python/sysmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/sysmodule.c')
-rw-r--r--Python/sysmodule.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index f558a00..437d7f8 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -1878,7 +1878,15 @@ _PySys_GetSizeOf(PyObject *o)
return (size_t)-1;
}
- return (size_t)size + _PyType_PreHeaderSize(Py_TYPE(o));
+ size_t presize = 0;
+ if (!Py_IS_TYPE(o, &PyType_Type) ||
+ PyType_HasFeature((PyTypeObject *)o, Py_TPFLAGS_HEAPTYPE))
+ {
+ /* Add the size of the pre-header if "o" is not a static type */
+ presize = _PyType_PreHeaderSize(Py_TYPE(o));
+ }
+
+ return (size_t)size + presize;
}
static PyObject *