diff options
author | Maurice Kalinowski <maurice.kalinowski@qt.io> | 2017-03-29 09:55:40 +0200 |
---|---|---|
committer | Maurice Kalinowski <maurice.kalinowski@qt.io> | 2017-03-29 09:55:40 +0200 |
commit | 917426bfb6cf874bf2977c5361087b6cf007f1c0 (patch) | |
tree | fbc8f74f1c343c3c9310105e04464b47ff33ad13 /examples | |
parent | 0806da33b910dbc0f211d4bd3eef96f6645db4d1 (diff) |
Fix potential crashes
In case of no active connection, transport might be nullptr as well,
causing either a nullptr reference or other side-effects.
Also the example applications should verify that a subscription
succeeded.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/mqtt/simpleclient/mainwindow.cpp | 10 | ||||
-rw-r--r-- | examples/mqtt/subscriptions/mainwindow.cpp | 8 |
2 files changed, 15 insertions, 3 deletions
diff --git a/examples/mqtt/simpleclient/mainwindow.cpp b/examples/mqtt/simpleclient/mainwindow.cpp index f6d35ad..c7e2efa 100644 --- a/examples/mqtt/simpleclient/mainwindow.cpp +++ b/examples/mqtt/simpleclient/mainwindow.cpp @@ -3,6 +3,7 @@ #include <QtCore/QDateTime> #include <QtMqtt/QMqttClient> +#include <QtWidgets/QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -88,12 +89,17 @@ void MainWindow::setClientPort(int p) void MainWindow::on_buttonPublish_clicked() { - m_client->publish(ui->lineEditTopic->text(), ui->lineEditMessage->text().toUtf8()); + if (!m_client->publish(ui->lineEditTopic->text(), ui->lineEditMessage->text().toUtf8())) + QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not publish message")); } void MainWindow::on_buttonSubscribe_clicked() { - m_client->subscribe(ui->lineEditTopic->text()); + auto subscription = m_client->subscribe(ui->lineEditTopic->text()); + if (!subscription) { + QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not subscribe. Is there a valid connection?")); + return; + } } void MainWindow::on_buttonPing_clicked() diff --git a/examples/mqtt/subscriptions/mainwindow.cpp b/examples/mqtt/subscriptions/mainwindow.cpp index d125297..078c6f0 100644 --- a/examples/mqtt/subscriptions/mainwindow.cpp +++ b/examples/mqtt/subscriptions/mainwindow.cpp @@ -4,6 +4,7 @@ #include <QtCore/QDateTime> #include <QtMqtt/QMqttClient> +#include <QtWidgets/QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), @@ -90,12 +91,17 @@ void MainWindow::setClientPort(int p) void MainWindow::on_buttonPublish_clicked() { - m_client->publish(ui->lineEditTopic->text(), ui->lineEditMessage->text().toUtf8(), ui->spinQoS_2->text().toUInt()); + if (!m_client->publish(ui->lineEditTopic->text(), ui->lineEditMessage->text().toUtf8(), ui->spinQoS_2->text().toUInt())) + QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not publish message")); } void MainWindow::on_buttonSubscribe_clicked() { auto subscription = m_client->subscribe(ui->lineEditTopic->text(), ui->spinQoS->text().toUInt()); + if (!subscription) { + QMessageBox::critical(this, QLatin1String("Error"), QLatin1String("Could not subscribe. Is there a valid connection?")); + return; + } auto subWindow = new SubscriptionWindow(subscription); subWindow->setWindowTitle(subscription->topic()); subWindow->show(); |