mirror of
https://github.com/python/cpython.git
synced 2026-02-13 19:04:37 +00:00
Bug #1599782: Fix segfault on bsddb.db.DB().type().
The problem is that _DB_get_type() can't be called without the GIL because it calls a bunch of PyErr_* APIs when an error occurs. There were no other cases in this file that it was called without the GIL. Removing the BEGIN/END THREAD around _DB_get_type() made everything work. Will backport.
This commit is contained in:
parent
5dba6f74c6
commit
4fe442383d
3 changed files with 6 additions and 2 deletions
|
|
@ -69,6 +69,10 @@ def test02_dbobj_dict_interface(self):
|
|||
self.db.close()
|
||||
self.env.close()
|
||||
|
||||
def test03_dbobj_type_before_open(self):
|
||||
# Ensure this doesn't cause a segfault.
|
||||
self.assertRaises(db.DBInvalidArgError, db.DB().type)
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
|
||||
def test_suite():
|
||||
|
|
|
|||
|
|
@ -242,6 +242,8 @@ Extension Modules
|
|||
a2b_qp() function, instead leave it in the string as quopri.decode()
|
||||
does.
|
||||
|
||||
- Bug #1599782: Fix segfault on bsddb.db.DB().type().
|
||||
|
||||
- Bug #1567666: Emulate GetFileAttributesExA for Win95.
|
||||
|
||||
- Patch #1576166: Support os.utime for directories on Windows NT+.
|
||||
|
|
|
|||
|
|
@ -1779,9 +1779,7 @@ DB_get_type(DBObject* self, PyObject* args)
|
|||
return NULL;
|
||||
CHECK_DB_NOT_CLOSED(self);
|
||||
|
||||
MYDB_BEGIN_ALLOW_THREADS;
|
||||
type = _DB_get_type(self);
|
||||
MYDB_END_ALLOW_THREADS;
|
||||
if (type == -1)
|
||||
return NULL;
|
||||
return PyInt_FromLong(type);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue