Skip to content

Commit 5774043

Browse files
author
Victor Stinner
committed
Merged revisions 78611 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r78611 | victor.stinner | 2010-03-03 01:50:12 +0100 (mer., 03 mars 2010) | 10 lines Merged revisions 78610 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r78610 | victor.stinner | 2010-03-03 01:43:44 +0100 (mer., 03 mars 2010) | 3 lines Issue #3299: fix thread.allocate_lock() error handler, replace PyObject_Del() by Py_DECREF() to fix a crash in pydebug mode. ........ ................
1 parent 151205f commit 5774043

1 file changed

Lines changed: 9 additions & 8 deletions

File tree

‎Modules/_threadmodule.c‎

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,13 @@ typedef struct {
2525
static void
2626
lock_dealloc(lockobject *self)
2727
{
28-
assert(self->lock_lock);
29-
/* Unlock the lock so it's safe to free it */
30-
PyThread_acquire_lock(self->lock_lock, 0);
31-
PyThread_release_lock(self->lock_lock);
32-
33-
PyThread_free_lock(self->lock_lock);
28+
if (self->lock_lock != NULL) {
29+
/* Unlock the lock so it's safe to free it */
30+
PyThread_acquire_lock(self->lock_lock, 0);
31+
PyThread_release_lock(self->lock_lock);
32+
33+
PyThread_free_lock(self->lock_lock);
34+
}
3435
PyObject_Del(self);
3536
}
3637

@@ -160,9 +161,9 @@ newlockobject(void)
160161
return NULL;
161162
self->lock_lock = PyThread_allocate_lock();
162163
if (self->lock_lock == NULL) {
163-
PyObject_Del(self);
164-
self = NULL;
164+
Py_DECREF(self);
165165
PyErr_SetString(ThreadError, "can't allocate lock");
166+
return NULL;
166167
}
167168
return self;
168169
}

0 commit comments

Comments
 (0)