diff Modules/_sqlite/statement.c @ 44022:52bbe3365c72 2.5

- Backported a workaround for a bug in SQLite 3.2.x/3.3.x versions where a statement recompilation with no bound parameters lead to a segfault - Backported a fix necessary because of an SQLite API change in version 3.5. This prevents segfaults when executing empty queries, like our test suite does.
author Gerhard Häring <gh@ghaering.de>
date Sun, 25 Nov 2007 17:40:35 +0000
parents 7da4af95ebad
children 787b969d37f0
line wrap: on
line diff
--- a/Modules/_sqlite/statement.c	Sat Nov 24 14:31:16 2007 +0000
+++ b/Modules/_sqlite/statement.c	Sun Nov 25 17:40:35 2007 +0000
@@ -237,7 +237,11 @@
          */
         #ifdef SQLITE_VERSION_NUMBER
         #if SQLITE_VERSION_NUMBER >= 3002002
-        (void)sqlite3_transfer_bindings(self->st, new_st);
+        /* The check for the number of parameters is necessary to not trigger a
+         * bug in certain SQLite versions (experienced in 3.2.8 and 3.3.4). */
+        if (sqlite3_bind_parameter_count(self->st) > 0) {
+            (void)sqlite3_transfer_bindings(self->st, new_st);
+        }
         #endif
         #else
         statement_bind_parameters(self, params);