From 07351b36b015bbf0d8e7591411301b7813d6f478 Mon Sep 17 00:00:00 2001 From: Martin Kleusberg Date: Tue, 25 Feb 2020 22:08:51 +0100 Subject: [PATCH] Fix some problems reported by Coverity This fixes some problems which were reported by Coverity. None of these is critical and some are only theoretical issues which will never be triggered. But better prepare the code for future changes and fix these warnings properly instead of just silencing them. --- src/FilterLineEdit.cpp | 6 +++++- src/FindReplaceDialog.cpp | 1 + src/TableBrowser.cpp | 3 +-- src/sql/sqlitetypes.h | 5 ++++- src/sqlitedb.cpp | 6 ++---- src/sqlitetablemodel.cpp | 19 ++++++++++--------- 6 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/FilterLineEdit.cpp b/src/FilterLineEdit.cpp index 63ed1239..dc969bc8 100644 --- a/src/FilterLineEdit.cpp +++ b/src/FilterLineEdit.cpp @@ -6,7 +6,11 @@ #include #include -FilterLineEdit::FilterLineEdit(QWidget* parent, std::vector* filters, size_t columnnum) : QLineEdit(parent), filterList(filters), columnNumber(columnnum) +FilterLineEdit::FilterLineEdit(QWidget* parent, std::vector* filters, size_t columnnum) : + QLineEdit(parent), + filterList(filters), + columnNumber(columnnum), + no_conditional_format(true) { setPlaceholderText(tr("Filter")); setClearButtonEnabled(true); diff --git a/src/FindReplaceDialog.cpp b/src/FindReplaceDialog.cpp index 18a9c05f..4279b3f8 100644 --- a/src/FindReplaceDialog.cpp +++ b/src/FindReplaceDialog.cpp @@ -7,6 +7,7 @@ FindReplaceDialog::FindReplaceDialog(QWidget* parent) : QDialog(parent), ui(new Ui::FindReplaceDialog), + m_scintilla(nullptr), foundIndicatorNumber(0), findInProgress(false) { diff --git a/src/TableBrowser.cpp b/src/TableBrowser.cpp index 05b244cf..7b55ccd4 100644 --- a/src/TableBrowser.cpp +++ b/src/TableBrowser.cpp @@ -328,8 +328,7 @@ void TableBrowser::init(DBBrowserDB* _db) void TableBrowser::reset() { // Reset the model - if(m_model) - m_model->reset(); + m_model->reset(); // Remove all stored table information browse data tab m_settings.clear(); diff --git a/src/sql/sqlitetypes.h b/src/sql/sqlitetypes.h index b9a17565..ea12158c 100644 --- a/src/sql/sqlitetypes.h +++ b/src/sql/sqlitetypes.h @@ -437,7 +437,10 @@ private: class IndexedColumn { public: - IndexedColumn() {} + IndexedColumn() + : m_isExpression(false) + { + } IndexedColumn(const std::string& name, bool expr, const std::string& order = std::string()) : m_name(name), diff --git a/src/sqlitedb.cpp b/src/sqlitedb.cpp index ef53c4bb..c625479f 100644 --- a/src/sqlitedb.cpp +++ b/src/sqlitedb.cpp @@ -1050,12 +1050,11 @@ bool DBBrowserDB::executeMultiSQL(QByteArray query, bool dirty, bool log) const char * const tail_start = tail; const char * const tail_end = tail + query.size() + 1; size_t total_tail_length = static_cast(tail_end - tail_start); - int res = SQLITE_OK; unsigned int line = 0; bool structure_updated = false; int last_progress_value = -1; std::string savepoint_name; - while(tail && *tail != 0 && (res == SQLITE_OK || res == SQLITE_DONE)) + while(tail && *tail != 0) { line++; @@ -1122,8 +1121,7 @@ bool DBBrowserDB::executeMultiSQL(QByteArray query, bool dirty, bool log) } // Execute next statement - res = sqlite3_prepare_v2(_db, tail, static_cast(tail_end - tail + 1), &vm, &tail); - if(res == SQLITE_OK) + if(sqlite3_prepare_v2(_db, tail, static_cast(tail_end - tail + 1), &vm, &tail) == SQLITE_OK) { switch(sqlite3_step(vm)) { diff --git a/src/sqlitetablemodel.cpp b/src/sqlitetablemodel.cpp index f06482e4..db01ebbb 100644 --- a/src/sqlitetablemodel.cpp +++ b/src/sqlitetablemodel.cpp @@ -419,8 +419,8 @@ QVariant SqliteTableModel::data(const QModelIndex &index, int role) const if(m_imagePreviewEnabled && !isImageData(data).isNull()) { QImage img; - img.loadFromData(data); - return QPixmap::fromImage(img); + if(img.loadFromData(data)) + return QPixmap::fromImage(img); } } @@ -796,16 +796,17 @@ std::vector SqliteTableModel::getColumns(std::shared_ptr p pDb = m_db.get(tr("retrieving list of columns")); sqlite3_stmt* stmt; - int status = sqlite3_prepare_v2(pDb.get(), sQuery.c_str(), static_cast(sQuery.size()), &stmt, nullptr); std::vector listColumns; - if(SQLITE_OK == status) + if(sqlite3_prepare_v2(pDb.get(), sQuery.c_str(), static_cast(sQuery.size()), &stmt, nullptr) == SQLITE_OK) { - sqlite3_step(stmt); - int columns = sqlite3_data_count(stmt); - for(int i = 0; i < columns; ++i) + if(sqlite3_step(stmt) == SQLITE_ROW) { - listColumns.push_back(sqlite3_column_name(stmt, i)); - fieldsTypes.push_back(sqlite3_column_type(stmt, i)); + int columns = sqlite3_data_count(stmt); + for(int i = 0; i < columns; ++i) + { + listColumns.push_back(sqlite3_column_name(stmt, i)); + fieldsTypes.push_back(sqlite3_column_type(stmt, i)); + } } } sqlite3_finalize(stmt);