Remove _Py_ResetReferences. Fixes bug #529750 "Circular reference makes
Py_Init crash". refchain cannot be cleared because objects can live across Py_Finalize() and Py_Initialize() if they are kept alive by circular references.
This commit is contained in:
parent
6141812820
commit
89350a41b9
|
@ -559,7 +559,6 @@ PyAPI_FUNC(void) _Py_NewReference(PyObject *);
|
||||||
PyAPI_FUNC(void) _Py_ForgetReference(PyObject *);
|
PyAPI_FUNC(void) _Py_ForgetReference(PyObject *);
|
||||||
PyAPI_FUNC(void) _Py_Dealloc(PyObject *);
|
PyAPI_FUNC(void) _Py_Dealloc(PyObject *);
|
||||||
PyAPI_FUNC(void) _Py_PrintReferences(FILE *);
|
PyAPI_FUNC(void) _Py_PrintReferences(FILE *);
|
||||||
PyAPI_FUNC(void) _Py_ResetReferences(void);
|
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* Without Py_TRACE_REFS, there's little enough to do that we expand code
|
/* Without Py_TRACE_REFS, there's little enough to do that we expand code
|
||||||
|
|
|
@ -1908,13 +1908,6 @@ _Py_ReadyTypes(void)
|
||||||
|
|
||||||
static PyObject refchain = {&refchain, &refchain};
|
static PyObject refchain = {&refchain, &refchain};
|
||||||
|
|
||||||
void
|
|
||||||
_Py_ResetReferences(void)
|
|
||||||
{
|
|
||||||
refchain._ob_prev = refchain._ob_next = &refchain;
|
|
||||||
_Py_RefTotal = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
_Py_NewReference(PyObject *op)
|
_Py_NewReference(PyObject *op)
|
||||||
{
|
{
|
||||||
|
|
|
@ -277,10 +277,6 @@ Py_Finalize(void)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
call_ll_exitfuncs();
|
call_ll_exitfuncs();
|
||||||
|
|
||||||
#ifdef Py_TRACE_REFS
|
|
||||||
_Py_ResetReferences();
|
|
||||||
#endif /* Py_TRACE_REFS */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create and initialize a new interpreter and thread, and return the
|
/* Create and initialize a new interpreter and thread, and return the
|
||||||
|
|
Loading…
Reference in New Issue