From 3b907df8e3672bab597e2cd8119ebae0b390b661 Mon Sep 17 00:00:00 2001 From: Peinthor Rene Date: Fri, 22 Aug 2014 23:13:39 +0200 Subject: [PATCH] tablemodel: fix crash if rowdata couldn't be fetched --- src/sqlitedb.cpp | 4 +++- src/sqlitetablemodel.cpp | 8 +++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp index 44834218..4ce6e6f0 100644 --- a/src/sqlitedb.cpp +++ b/src/sqlitedb.cpp @@ -439,6 +439,7 @@ bool DBBrowserDB::getRow(const QString& sTableName, int rowid, QList QString sQuery = QString("SELECT * from %1 WHERE rowid=%2;").arg(sTableName).arg(rowid); QByteArray utf8Query = sQuery.toUtf8(); sqlite3_stmt *stmt; + bool ret = false; int status = sqlite3_prepare_v2(_db, utf8Query, utf8Query.size(), &stmt, NULL); if(SQLITE_OK == status) @@ -448,11 +449,12 @@ bool DBBrowserDB::getRow(const QString& sTableName, int rowid, QList { for (int i = 0; i < sqlite3_column_count(stmt); ++i) rowdata.append(QByteArray(static_cast(sqlite3_column_blob(stmt, i)), sqlite3_column_bytes(stmt, i))); + ret = true; } } sqlite3_finalize(stmt); - return status == SQLITE_OK; + return ret; } int DBBrowserDB::addRecord(const QString& sTableName) diff --git a/src/sqlitetablemodel.cpp b/src/sqlitetablemodel.cpp index dc766d8d..ab597d25 100644 --- a/src/sqlitetablemodel.cpp +++ b/src/sqlitetablemodel.cpp @@ -321,10 +321,12 @@ bool SqliteTableModel::insertRows(int row, int count, const QModelIndex& parent) // update column with default values QByteArrayList rowdata; - m_db->getRow(m_sTable, rowid, rowdata); - for(int j=1; j < m_headers.size(); ++j) + if( m_db->getRow(m_sTable, rowid, rowdata) ) { - m_data[i].replace(j, rowdata[j - 1]); + for(int j=1; j < m_headers.size(); ++j) + { + m_data[i].replace(j, rowdata[j - 1]); + } } }