without calling PyType_Ready().
Question 1: Should the interpreter register all types with PyType_Ready()?
Many types seem to avoid it.
Question 2: To reproduce the problem, run the following code:
def f():
while True:
for a in iter(range(0,1,10**20)):
pass
f()
And watch the memory used by the process.
How do we test this in a unittest?
if (PyType_Ready(&PyStdPrinter_Type) < 0)
Py_FatalError("Can't initialize StdPrinter");
-
- if (PyType_Ready(&PyRange_Type) < 0)
- Py_FatalError("Can't initialize 'range'");
}
Py_DECREF(r->start);
Py_DECREF(r->stop);
Py_DECREF(r->step);
- Py_Type(r)->tp_free(r);
+ PyObject_Del(r);
}
/* Return number of items in range (lo, hi, step), when arguments are
Py_XDECREF(r->start);
Py_XDECREF(r->step);
Py_XDECREF(r->len);
+ PyObject_Del(r);
}
static PyObject *