summaryrefslogtreecommitdiffstats
path: root/Modules/gcmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'Modules/gcmodule.c')
-rw-r--r--Modules/gcmodule.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
index 349ba6a..63a2370 100644
--- a/Modules/gcmodule.c
+++ b/Modules/gcmodule.c
@@ -798,14 +798,17 @@ _PyObject_GC_UnTrack(PyObject *op)
}
PyObject *
-_PyObject_GC_Malloc(PyTypeObject *tp, int nitems, size_t padding)
+_PyObject_GC_Malloc(PyTypeObject *tp, int nitems)
{
PyObject *op;
+ size_t basicsize;
#ifdef WITH_CYCLE_GC
- const size_t basic = (size_t)_PyObject_VAR_SIZE(tp, nitems);
- const size_t nbytes = sizeof(PyGC_Head) + basic + padding;
+ size_t nbytes;
+ PyGC_Head *g;
- PyGC_Head *g = PyObject_MALLOC(nbytes);
+ _PyObject_VAR_SIZE(basicsize, tp, nitems);
+ nbytes = sizeof(PyGC_Head) + basicsize;
+ g = PyObject_MALLOC(nbytes);
if (g == NULL)
return (PyObject *)PyErr_NoMemory();
g->gc_next = NULL;
@@ -821,7 +824,8 @@ _PyObject_GC_Malloc(PyTypeObject *tp, int nitems, size_t padding)
}
op = FROM_GC(g);
#else
- op = PyObject_MALLOC(_PyObject_VAR_SIZE(tp, nitems) + padding);
+ _PyObject_VAR_SIZE(basicsize, tp, nitems);
+ op = PyObject_MALLOC(basicsize);
if (op == NULL)
return (PyObject *)PyErr_NoMemory();
@@ -832,33 +836,36 @@ _PyObject_GC_Malloc(PyTypeObject *tp, int nitems, size_t padding)
PyObject *
_PyObject_GC_New(PyTypeObject *tp)
{
- PyObject *op = _PyObject_GC_Malloc(tp, 0, 0);
+ PyObject *op = _PyObject_GC_Malloc(tp, 0);
return PyObject_INIT(op, tp);
}
PyVarObject *
-_PyObject_GC_NewVar(PyTypeObject *tp, int size)
+_PyObject_GC_NewVar(PyTypeObject *tp, int nitems)
{
- PyVarObject *op = (PyVarObject *) _PyObject_GC_Malloc(tp, size, 0);
- return PyObject_INIT_VAR(op, tp, size);
+ PyVarObject *op = (PyVarObject *) _PyObject_GC_Malloc(tp, nitems);
+ return PyObject_INIT_VAR(op, tp, nitems);
}
PyVarObject *
-_PyObject_GC_Resize(PyVarObject *op, int size)
+_PyObject_GC_Resize(PyVarObject *op, int nitems)
{
+ size_t basicsize;
#ifdef WITH_CYCLE_GC
PyGC_Head *g = AS_GC(op);
- g = PyObject_REALLOC(g, _PyObject_VAR_SIZE(op->ob_type, size) +
- sizeof(PyGC_Head));
+
+ _PyObject_VAR_SIZE(basicsize, op->ob_type, nitems);
+ g = PyObject_REALLOC(g, sizeof(PyGC_Head) + basicsize);
if (g == NULL)
return (PyVarObject *)PyErr_NoMemory();
op = (PyVarObject *) FROM_GC(g);
#else
- op = PyObject_REALLOC(op, _PyObject_VAR_SIZE(op->ob_type, size));
+ _PyObject_VAR_SIZE(basicsize, op->ob_type, nitems);
+ op = PyObject_REALLOC(op, basicsize);
if (op == NULL)
return (PyVarObject *)PyErr_NoMemory();
#endif
- op->ob_size = size;
+ op->ob_size = nitems;
return op;
}