Subject: | sqlite3_finalize shall not be called twice |
one prepare is ended by one finalize,
each bind is ended by a reset (inside the enclosing prepare-finalize).
The code as is called finalize after bind.
Subject: | sqlite3-finalize.diff |
--- dbdimp.c
+++ dbdimp.c
@@ -399,7 +399,7 @@ sqlite_st_execute (SV *sth, imp_sth_t *i
continue;
}
/* There are bug reports that say this should be sqlite3_reset() */
- sqlite3_finalize(imp_sth->stmt);
+ sqlite3_reset(imp_sth->stmt);
sqlite_error(sth, (imp_xxh_t*)imp_sth, imp_sth->retval, (char*)sqlite3_errmsg(imp_dbh->db));
return -5;
}
@@ -419,7 +419,7 @@ sqlite_st_execute (SV *sth, imp_sth_t *i
sqlite_trace(5, "exec ok - %d rows, %d cols\n", imp_sth->nrow, DBIc_NUM_FIELDS(imp_sth));
return 0;
/* There are bug reports that say this should be sqlite3_reset() */
- default: sqlite3_finalize(imp_sth->stmt);
+ default: sqlite3_reset(imp_sth->stmt);
sqlite_error(sth, (imp_xxh_t*)imp_sth, imp_sth->retval, (char*)sqlite3_errmsg(imp_dbh->db));
return -6;
}