* Turn the deadlock situation described in SF bug #775414 into a
  DBDeadLockError exception.
* add the test case for my previous dbtables commit.
diff --git a/Lib/bsddb/__init__.py b/Lib/bsddb/__init__.py
index c004c08..d5ab000 100644
--- a/Lib/bsddb/__init__.py
+++ b/Lib/bsddb/__init__.py
@@ -344,6 +344,7 @@
         else:
             raise error, "cachesize must be >= 20480"
     e.open('.', db.DB_PRIVATE | db.DB_CREATE | db.DB_THREAD | db.DB_INIT_LOCK | db.DB_INIT_MPOOL)
+    e.set_lk_detect(db.DB_LOCK_DEFAULT)
     return e
 
 def _checkflag(flag, file):
diff --git a/Lib/bsddb/test/test_dbtables.py b/Lib/bsddb/test/test_dbtables.py
index 1128a5a..26e3d36 100644
--- a/Lib/bsddb/test/test_dbtables.py
+++ b/Lib/bsddb/test/test_dbtables.py
@@ -339,6 +339,16 @@
                         conditions={'Name': dbtables.LikeCond('%')},
                         mappings={'Access': increment_access})
 
+        try:
+            self.tdb.Modify(tabname,
+                            conditions={'Name': dbtables.LikeCond('%')},
+                            mappings={'Access': 'What is your quest?'})
+        except TypeError:
+            # success, the string value in mappings isn't callable
+            pass
+        else:
+            raise RuntimeError, "why was TypeError not raised for bad callable?"
+
         # Delete key in select conditions
         values = self.tdb.Select(
             tabname, None,