diff options
author | Honglei Zhang <honglei.zhang@nokia.com> | 2011-12-08 15:38:25 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-12-12 10:43:44 +0100 |
commit | 67be01ae5048138e894fa8d3eb0abe93c5699048 (patch) | |
tree | ccb2c3f3e0c3f742d3a4f1b5d2cd20fd70521f20 /src/sql/drivers | |
parent | b9ebb65c77ea779d4abbf92e93b8bef5a41c84bc (diff) |
Check driver validity before using it
Even though it is stated in the documentation that the SQL driver must
remain valid during the life time of QSqlQuery, there are users who don't
follow the rule. It's common that the destructor of QSqlQuery is called
after the driver is already deleted. This fix checks the validity of
the SQLite driver before QSqliteResult uses it in destructor.
Task-number: QTBUG-16967
Change-Id: If0f52113f12e14102da1671cd6e12bdaa267114f
Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/sql/drivers')
-rw-r--r-- | src/sql/drivers/sqlite/qsql_sqlite.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index 38e4a63d57..d4acedc69b 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -292,7 +292,9 @@ QSQLiteResult::QSQLiteResult(const QSQLiteDriver* db) QSQLiteResult::~QSQLiteResult() { - qobject_cast<const QSQLiteDriver *>(driver())->d->results.removeOne(this); + const QSqlDriver *sqlDriver = driver(); + if (sqlDriver) + qobject_cast<const QSQLiteDriver *>(sqlDriver)->d->results.removeOne(this); d->cleanup(); delete d; } |