From c672eafe70316f2a4560bbb81d3d93aa165c1191 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Wed, 13 Jan 2010 22:54:40 +0100 Subject: [PATCH 2/2] issue 3299: replace PyObject_DEL() by Py_DECREF() in thread module --- Modules/threadmodule.c | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Modules/threadmodule.c b/Modules/threadmodule.c index 5310072..04fa902 100644 --- a/Modules/threadmodule.c +++ b/Modules/threadmodule.c @@ -27,7 +27,7 @@ typedef struct { static void lock_dealloc(lockobject *self) { - assert(self->lock_lock); + if (self->lock_lock != NULL) { if (self->in_weakreflist != NULL) PyObject_ClearWeakRefs((PyObject *) self); /* Unlock the lock so it's safe to free it */ @@ -35,6 +35,7 @@ lock_dealloc(lockobject *self) PyThread_release_lock(self->lock_lock); PyThread_free_lock(self->lock_lock); + } PyObject_Del(self); } @@ -165,9 +166,9 @@ newlockobject(void) self->lock_lock = PyThread_allocate_lock(); self->in_weakreflist = NULL; if (self->lock_lock == NULL) { - PyObject_Del(self); - self = NULL; + Py_DECREF(self); PyErr_SetString(ThreadError, "can't allocate lock"); + return NULL; } return self; } -- 1.6.6