Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8102:277aadb0ef8c HEAD
sqlite crashed with dict server. Patch by Bernhard Herzog.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 22 Aug 2008 01:15:13 +0300 |
parents | 06cb6f9d3054 |
children | 360ade35792f |
files | src/lib-sql/driver-sqlite.c |
diffstat | 1 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-sql/driver-sqlite.c Thu Aug 21 07:36:40 2008 +0300 +++ b/src/lib-sql/driver-sqlite.c Fri Aug 22 01:15:13 2008 +0300 @@ -124,6 +124,9 @@ { struct sqlite_db *db = (struct sqlite_db *)_db; + if (driver_sqlite_connect(_db) < 0) + return; + db->rc = sqlite3_exec(db->sqlite, query, NULL, 0, NULL); if (db->rc != SQLITE_OK) { i_error("sqlite: exec(%s) failed: %s (%d)", @@ -152,15 +155,21 @@ result = i_new(struct sqlite_result, 1); - rc = sqlite3_prepare(db->sqlite, query, -1, &result->stmt, NULL); - if (rc == SQLITE_OK) { - result->api = driver_sqlite_result; - result->cols = sqlite3_column_count(result->stmt); - result->row = i_new(const char *, result->cols); - } else { + if (driver_sqlite_connect(_db) < 0) { result->api = driver_sqlite_error_result; result->stmt = NULL; result->cols = 0; + } else { + rc = sqlite3_prepare(db->sqlite, query, -1, &result->stmt, NULL); + if (rc == SQLITE_OK) { + result->api = driver_sqlite_result; + result->cols = sqlite3_column_count(result->stmt); + result->row = i_new(const char *, result->cols); + } else { + result->api = driver_sqlite_error_result; + result->stmt = NULL; + result->cols = 0; + } } result->api.db = _db;