diff --git a/dbdimp.c b/dbdimp.c index 381cae2..a2bb002 100644 --- a/dbdimp.c +++ b/dbdimp.c @@ -272,7 +272,6 @@ sqlite_st_prepare (SV *sth, imp_sth_t *imp_sth, imp_sth->retval = SQLITE_OK; imp_sth->params = newAV(); imp_sth->col_types = newAV(); - imp_sth->statement = savepv(statement); /* store the query for later re-use if required */ if ((retval = sqlite3_prepare_v2(imp_dbh->db, statement, -1, &(imp_sth->stmt), &extra)) != SQLITE_OK) @@ -284,6 +283,10 @@ sqlite_st_prepare (SV *sth, imp_sth_t *imp_sth, return FALSE; /* -> undef in lib/DBD/SQLite.pm */ } + /* store the query for later re-use if required */ + /* but only when the query is properly prepared */ + imp_sth->statement = savepv(statement); + DBIc_NUM_PARAMS(imp_sth) = sqlite3_bind_parameter_count(imp_sth->stmt); DBIc_NUM_FIELDS(imp_sth) = sqlite3_column_count(imp_sth->stmt); DBIc_IMPSET_on(imp_sth);