Rex Dieter 8d984d2
From 326578a1ff79a83b748e6575cffd727521425b09 Mon Sep 17 00:00:00 2001
Rex Dieter 8d984d2
From: =?UTF-8?q?Cristian=20One=C8=9B?= <onet.cristian@gmail.com>
Rex Dieter 8d984d2
Date: Mon, 26 Nov 2012 21:27:33 +0200
Rex Dieter 8d984d2
Subject: [PATCH 10/22] Fix a possible crash while mapping an OFX account.
Rex Dieter 8d984d2
Rex Dieter 8d984d2
The possibility occurred because the event loop is running
Rex Dieter 8d984d2
while the https request is performed. To avoid the crash
Rex Dieter 8d984d2
disable the back button.
Rex Dieter 8d984d2
Rex Dieter 8d984d2
BUG: 296681
Rex Dieter 8d984d2
(cherry picked from commit 62c62948cad0841dc585146a7ad55ee533d86097)
Rex Dieter 8d984d2
---
Rex Dieter 8d984d2
 kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.cpp | 6 ++++++
Rex Dieter 8d984d2
 1 file changed, 6 insertions(+)
Rex Dieter 8d984d2
Rex Dieter 8d984d2
diff --git a/kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.cpp b/kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.cpp
Rex Dieter 8d984d2
index 8c3738b..8739ad4 100644
Rex Dieter 8d984d2
--- a/kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.cpp
Rex Dieter 8d984d2
+++ b/kmymoney/plugins/ofximport/dialogs/konlinebankingsetupwizard.cpp
Rex Dieter 8d984d2
@@ -326,7 +326,13 @@ bool KOnlineBankingSetupWizard::finishLoginPage(void)
Rex Dieter 8d984d2
 
Rex Dieter 8d984d2
     KUrl filename(QString("%1response.ofx").arg(KStandardDirs::locateLocal("appdata", "")));
Rex Dieter 8d984d2
     QByteArray req(libofx_request_accountinfo(&fi);;
Rex Dieter 8d984d2
+    // because the event loop is running while the request is performed disable the back button
Rex Dieter 8d984d2
+    // (this function is not reentrant so the application might crash when back/next are used)
Rex Dieter 8d984d2
+    QAbstractButton *backButton = button(QWizard::BackButton);
Rex Dieter 8d984d2
+    bool backButtonState = backButton->isEnabled();
Rex Dieter 8d984d2
+    backButton->setEnabled(false);
Rex Dieter 8d984d2
     OfxHttpsRequest(QString("POST"), KUrl((*m_it_info).url), req, QMap<QString, QString>(), filename, true);
Rex Dieter 8d984d2
+    backButton->setEnabled(backButtonState);
Rex Dieter 8d984d2
 
Rex Dieter 8d984d2
     LibofxContextPtr ctx = libofx_get_new_context();
Rex Dieter 8d984d2
     Q_CHECK_PTR(ctx);
Rex Dieter 8d984d2
-- 
Rex Dieter 8d984d2
1.8.1.4
Rex Dieter 8d984d2