Commit 374164c2 authored by Serhiy Storchaka's avatar Serhiy Storchaka

Issue #14373: Fixed segmentation fault when gc.collect() is called during

constructing lru_cache (C implementation).
parent 389e3d76
...@@ -28,6 +28,9 @@ Core and Builtins ...@@ -28,6 +28,9 @@ Core and Builtins
Library Library
------- -------
- Issue #14373: Fixed segmentation fault when gc.collect() is called during
constructing lru_cache (C implementation).
- Issue #24695: Fix a regression in traceback.print_exception(). If - Issue #24695: Fix a regression in traceback.print_exception(). If
exc_traceback is None we shouldn't print a traceback header like described exc_traceback is None we shouldn't print a traceback header like described
in the documentation. in the documentation.
......
...@@ -899,7 +899,7 @@ bounded_lru_cache_wrapper(lru_cache_object *self, PyObject *args, PyObject *kwds ...@@ -899,7 +899,7 @@ bounded_lru_cache_wrapper(lru_cache_object *self, PyObject *args, PyObject *kwds
static PyObject * static PyObject *
lru_cache_new(PyTypeObject *type, PyObject *args, PyObject *kw) lru_cache_new(PyTypeObject *type, PyObject *args, PyObject *kw)
{ {
PyObject *func, *maxsize_O, *cache_info_type; PyObject *func, *maxsize_O, *cache_info_type, *cachedict;
int typed; int typed;
lru_cache_object *obj; lru_cache_object *obj;
Py_ssize_t maxsize; Py_ssize_t maxsize;
...@@ -937,15 +937,16 @@ lru_cache_new(PyTypeObject *type, PyObject *args, PyObject *kw) ...@@ -937,15 +937,16 @@ lru_cache_new(PyTypeObject *type, PyObject *args, PyObject *kw)
return NULL; return NULL;
} }
obj = (lru_cache_object *)type->tp_alloc(type, 0); if (!(cachedict = PyDict_New()))
if (obj == NULL)
return NULL; return NULL;
if (!(obj->cache = PyDict_New())) { obj = (lru_cache_object *)type->tp_alloc(type, 0);
Py_DECREF(obj); if (obj == NULL) {
Py_DECREF(cachedict);
return NULL; return NULL;
} }
obj->cache = cachedict;
obj->root.prev = &obj->root; obj->root.prev = &obj->root;
obj->root.next = &obj->root; obj->root.next = &obj->root;
obj->maxsize = maxsize; obj->maxsize = maxsize;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment