diff -r 07331638ac85 Lib/sqlite3/test/regression.py --- a/Lib/sqlite3/test/regression.py Thu Dec 19 13:47:35 2013 +0100 +++ b/Lib/sqlite3/test/regression.py Thu Dec 19 13:54:57 2013 +0100 @@ -330,6 +330,11 @@ class RegressionTests(unittest.TestCase) datetime.datetime(2012, 4, 4, 15, 6, 0, 123456), ]) + def CheckInvalidIsolationLevelType(self): + # isolation level is a string, not an integer + self.assertRaises(TypeError, + sqlite.connect, ":memory:", isolation_level=123) + def suite(): regression_suite = unittest.makeSuite(RegressionTests, "Check") diff -r 07331638ac85 Modules/_sqlite/connection.c --- a/Modules/_sqlite/connection.c Thu Dec 19 13:47:35 2013 +0100 +++ b/Modules/_sqlite/connection.c Thu Dec 19 13:54:57 2013 +0100 @@ -128,7 +128,10 @@ int pysqlite_connection_init(pysqlite_Co Py_INCREF(isolation_level); } self->isolation_level = NULL; - pysqlite_connection_set_isolation_level(self, isolation_level); + if (pysqlite_connection_set_isolation_level(self, isolation_level) < 0) { + Py_DECREF(isolation_level); + return -1; + } Py_DECREF(isolation_level); self->statement_cache = (pysqlite_Cache*)PyObject_CallFunction((PyObject*)&pysqlite_CacheType, "Oi", self, cached_statements);