From aa50d3097ebdd9df0a741b956c4847ede6353280 Mon Sep 17 00:00:00 2001 From: Eelke Klein Date: Fri, 1 Sep 2017 21:07:37 +0200 Subject: [PATCH] Fixed some cases where nullptr were not correctly handled. --- src/pglab/MainWindow.h | 2 +- src/pglab/OpenDatabase.cpp | 7 +++++-- src/pglab/QueryTab.cpp | 19 ++++++++++++------- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/pglab/MainWindow.h b/src/pglab/MainWindow.h index 438b66f..4359dad 100644 --- a/src/pglab/MainWindow.h +++ b/src/pglab/MainWindow.h @@ -41,7 +41,7 @@ private: Ui::MainWindow *ui; ConnectionConfig m_config; - OpenDatabase *m_database; + OpenDatabase *m_database = nullptr; MasterController *m_masterController; diff --git a/src/pglab/OpenDatabase.cpp b/src/pglab/OpenDatabase.cpp index f00cf5d..cc04b33 100644 --- a/src/pglab/OpenDatabase.cpp +++ b/src/pglab/OpenDatabase.cpp @@ -8,10 +8,12 @@ Expected OpenDatabase::createOpenDatabase(const ConnectionConfig OpenDatabase *odb = new OpenDatabase(cfg, nullptr); if (odb->Init()) { + return odb; } - return odb; //return Expected::fromException(std::out_of_range("Invalid row")); + return Expected::fromException( + std::runtime_error("Failed to get database information")); } OpenDatabase::OpenDatabase(const ConnectionConfig& cfg, QObject *parent) @@ -33,8 +35,9 @@ bool OpenDatabase::Init() auto vals = m_config.getValues(); if (conn.connect(kw, vals, 0)) { m_catalogue->loadAll(conn); + return true; } - return true; + return false; } PgDatabaseCatalogue* OpenDatabase::catalogue() diff --git a/src/pglab/QueryTab.cpp b/src/pglab/QueryTab.cpp index 432616f..fd2e01e 100644 --- a/src/pglab/QueryTab.cpp +++ b/src/pglab/QueryTab.cpp @@ -27,7 +27,9 @@ QueryParamListController::QueryParamListController(QTableView *tv, , paramTableView(tv) , m_openDatabase(opendb) { - m_typeDelegate.setTypeSelectionModel(opendb->typeSelectionModel()); + if (opendb) { + m_typeDelegate.setTypeSelectionModel(opendb->typeSelectionModel()); + } paramTableView->setModel(&m_paramList); paramTableView->setItemDelegateForColumn(1, &m_typeDelegate); @@ -82,17 +84,20 @@ QueryTab::QueryTab(MainWindow *win, QWidget *parent) : font.setPointSize(10); ui->queryEdit->setFont(font); - OpenDatabase* open_database = m_win->getDatabase(); - auto cat = open_database->catalogue(); - highlighter = new SqlSyntaxHighlighter(ui->queryEdit->document()); - highlighter->setTypes(cat->types()); + OpenDatabase* open_database = m_win->getDatabase(); + if (open_database) { + auto cat = open_database->catalogue(); + highlighter->setTypes(cat->types()); + } connect(ui->queryEdit, &QPlainTextEdit::textChanged, this, &QueryTab::queryTextChanged); m_queryParamListController = new QueryParamListController(ui->paramTableView, open_database, this); - connect(ui->addButton, &QPushButton::clicked, m_queryParamListController, &QueryParamListController::on_addParam); - connect(ui->removeButton, &QPushButton::clicked, m_queryParamListController, &QueryParamListController::on_removeParam); + connect(ui->addButton, &QPushButton::clicked, m_queryParamListController, + &QueryParamListController::on_addParam); + connect(ui->removeButton, &QPushButton::clicked, m_queryParamListController, + &QueryParamListController::on_removeParam); } QueryTab::~QueryTab()