einfo->line = line;
if (einfo->errcode != SQLITE_OK) {
- einfo->errmsg = (char*)sqlite3_errmsg(H->db);
+ if (einfo->errmsg) {
+ efree(einfo->errmsg);
+ }
+ einfo->errmsg = estrdup((char*)sqlite3_errmsg(H->db));
} else { /* no error */
strcpy(*pdo_err, PDO_ERR_NONE);
return 0;
pdo_sqlite_db_handle *H = (pdo_sqlite_db_handle *)dbh->driver_data;
if (H) {
+ pdo_sqlite_error_info *einfo = &H->einfo;
+
pdo_sqlite_cleanup_callbacks(H TSRMLS_CC);
if (H->db) {
sqlite3_close(H->db);
H->db = NULL;
}
+ if (einfo->errmsg) {
+ efree(einfo->errmsg);
+ einfo->errmsg = NULL;
+ }
pefree(H, dbh->is_persistent);
dbh->driver_data = NULL;
}