On 13/08/11 22:15, arigo wrote:
Log: Fix a bug in _sqlite3.py: memory is freed too earlydiff --git a/lib_pypy/_sqlite3.py b/lib_pypy/_sqlite3.py --- a/lib_pypy/_sqlite3.py +++ b/lib_pypy/_sqlite3.py @@ -891,7 +891,8 @@ self.statement = c_void_p() next_char = c_char_p() - ret = sqlite.sqlite3_prepare_v2(self.con.db, sql, -1, byref(self.statement), byref(next_char)) + sql_char = c_char_p(sql) + ret = sqlite.sqlite3_prepare_v2(self.con.db, sql_char, -1, byref(self.statement), byref(next_char)) if ret == SQLITE_OK and self.statement.value is None: # an empty statement, we work around that, as it's the least trouble ret = sqlite.sqlite3_prepare_v2(self.con.db, "select 42", -1, byref(self.statement), byref(next_char)) @@ -903,6 +904,7 @@ if _check_remaining_sql(next_char.value): raise Warning, "One and only one statement required: %r" % ( next_char.value,) + # sql_char should remain alive until here self._build_row_cast_map()
why is this needed? Does the sqlite API requires that the SQL buffer stays alive even after the call to sqlite3_prepare?
ciao, Anto _______________________________________________ pypy-dev mailing list [email protected] http://mail.python.org/mailman/listinfo/pypy-dev
