tablemodel: fix crash if rowdata couldn't be fetched

This commit is contained in:
Peinthor Rene
2014-08-22 23:13:39 +02:00
parent beae69296c
commit 3b907df8e3
2 changed files with 8 additions and 4 deletions

View File

@@ -439,6 +439,7 @@ bool DBBrowserDB::getRow(const QString& sTableName, int rowid, QList<QByteArray>
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<QByteArray>
{
for (int i = 0; i < sqlite3_column_count(stmt); ++i)
rowdata.append(QByteArray(static_cast<const char*>(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)

View File

@@ -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]);
}
}
}