Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3,

such as was shipped with Centos 5 and Mac OS X 10.4.
This commit is contained in:
Serhiy Storchaka 2013-04-28 14:11:55 +03:00
commit 5f99fa7287
4 changed files with 10 additions and 7 deletions

View File

@ -10,6 +10,9 @@ What's New in Python 3.4.0 Alpha 1?
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3,
such as was shipped with Centos 5 and Mac OS X 10.4.
- Issue #17413: sys.settrace callbacks were being passed a string instead of an - Issue #17413: sys.settrace callbacks were being passed a string instead of an
exception instance for the 'value' element of the arg tuple if the exception exception instance for the 'value' element of the arg tuple if the exception
originated from C code; now an exception instance is always provided. originated from C code; now an exception instance is always provided.

View File

@ -701,7 +701,7 @@ PyObject* _pysqlite_query_execute(pysqlite_Cursor* self, int multiple, PyObject*
Py_DECREF(self->lastrowid); Py_DECREF(self->lastrowid);
if (!multiple && statement_type == STATEMENT_INSERT) { if (!multiple && statement_type == STATEMENT_INSERT) {
sqlite3_int64 lastrowid; sqlite_int64 lastrowid;
Py_BEGIN_ALLOW_THREADS Py_BEGIN_ALLOW_THREADS
lastrowid = sqlite3_last_insert_rowid(self->connection->db); lastrowid = sqlite3_last_insert_rowid(self->connection->db);
Py_END_ALLOW_THREADS Py_END_ALLOW_THREADS

View File

@ -111,7 +111,7 @@ int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st)
#endif #endif
PyObject * PyObject *
_pysqlite_long_from_int64(sqlite3_int64 value) _pysqlite_long_from_int64(sqlite_int64 value)
{ {
#ifdef HAVE_LONG_LONG #ifdef HAVE_LONG_LONG
# if SIZEOF_LONG_LONG < 8 # if SIZEOF_LONG_LONG < 8
@ -135,7 +135,7 @@ _pysqlite_long_from_int64(sqlite3_int64 value)
return PyLong_FromLong(value); return PyLong_FromLong(value);
} }
sqlite3_int64 sqlite_int64
_pysqlite_long_as_int64(PyObject * py_val) _pysqlite_long_as_int64(PyObject * py_val)
{ {
int overflow; int overflow;
@ -158,8 +158,8 @@ _pysqlite_long_as_int64(PyObject * py_val)
#endif #endif
return value; return value;
} }
else if (sizeof(value) < sizeof(sqlite3_int64)) { else if (sizeof(value) < sizeof(sqlite_int64)) {
sqlite3_int64 int64val; sqlite_int64 int64val;
if (_PyLong_AsByteArray((PyLongObject *)py_val, if (_PyLong_AsByteArray((PyLongObject *)py_val,
(unsigned char *)&int64val, sizeof(int64val), (unsigned char *)&int64val, sizeof(int64val),
IS_LITTLE_ENDIAN, 1 /* signed */) >= 0) { IS_LITTLE_ENDIAN, 1 /* signed */) >= 0) {

View File

@ -36,7 +36,7 @@ int pysqlite_step(sqlite3_stmt* statement, pysqlite_Connection* connection);
*/ */
int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st); int _pysqlite_seterror(sqlite3* db, sqlite3_stmt* st);
PyObject * _pysqlite_long_from_int64(sqlite3_int64 value); PyObject * _pysqlite_long_from_int64(sqlite_int64 value);
sqlite3_int64 _pysqlite_long_as_int64(PyObject * value); sqlite_int64 _pysqlite_long_as_int64(PyObject * value);
#endif #endif