summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Hilsheimer <volker.hilsheimer@qt.io>2020-04-30 14:32:06 +0200
committercherrypickbot <cherrypickbot@codereview.qt-project.org>2020-05-04 15:25:27 +0000
commitff81116cb967edc6707fe62217ad6a701d4d8d1f (patch)
treece7c92630bf77d2a9cc9a68fbea6e83e04469367
parentdc5fed5555d1c904753e83fd90aeecae547146ce (diff)
downloadqttools-ff81116cb967edc6707fe62217ad6a701d4d8d1f.tar.gz
Plug memory leak when user cancels adding phrase to phrasebook
Fixes: QTBUG-83914 Change-Id: I94e8396c6e508fed699b6892f49dc63e4c10da4c Coverity-Id: 22122 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 33a846a4d36ec339f8ddea08641ec02f2723a202) Reviewed-by: cherrypickbot
-rw-r--r--src/linguist/linguist/mainwindow.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/linguist/linguist/mainwindow.cpp b/src/linguist/linguist/mainwindow.cpp
index 26a3d03f2..3f04a68f7 100644
--- a/src/linguist/linguist/mainwindow.cpp
+++ b/src/linguist/linguist/mainwindow.cpp
@@ -1274,9 +1274,6 @@ void MainWindow::printPhraseBook(QAction *action)
void MainWindow::addToPhraseBook()
{
- MessageItem *currentMessage = m_dataModel->messageItem(m_currentIndex);
- Phrase *phrase = new Phrase(currentMessage->text(), currentMessage->translation(),
- QString(), nullptr);
QStringList phraseBookList;
QHash<QString, PhraseBook *> phraseBookHash;
foreach (PhraseBook *pb, m_phraseBooks) {
@@ -1295,20 +1292,31 @@ void MainWindow::addToPhraseBook()
if (phraseBookList.isEmpty()) {
QMessageBox::warning(this, tr("Add to phrase book"),
tr("No appropriate phrasebook found."));
- } else if (phraseBookList.size() == 1) {
+ return;
+ }
+
+ QString selectedPhraseBook;
+ if (phraseBookList.size() == 1) {
+ selectedPhraseBook = phraseBookList.at(0);
if (QMessageBox::information(this, tr("Add to phrase book"),
- tr("Adding entry to phrasebook %1").arg(phraseBookList.at(0)),
+ tr("Adding entry to phrasebook %1").arg(selectedPhraseBook),
QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Ok)
- == QMessageBox::Ok)
- phraseBookHash.value(phraseBookList.at(0))->append(phrase);
+ != QMessageBox::Ok)
+ return;
} else {
bool okPressed = false;
- QString selection = QInputDialog::getItem(this, tr("Add to phrase book"),
+ QString selectedPhraseBook = QInputDialog::getItem(this, tr("Add to phrase book"),
tr("Select phrase book to add to"),
phraseBookList, 0, false, &okPressed);
- if (okPressed)
- phraseBookHash.value(selection)->append(phrase);
+ if (!okPressed)
+ return;
}
+
+ MessageItem *currentMessage = m_dataModel->messageItem(m_currentIndex);
+ Phrase *phrase = new Phrase(currentMessage->text(), currentMessage->translation(),
+ QString(), nullptr);
+
+ phraseBookHash.value(selectedPhraseBook)->append(phrase);
}
void MainWindow::resetSorting()