diff options
author | Volker Hilsheimer <volker.hilsheimer@qt.io> | 2020-04-30 14:32:06 +0200 |
---|---|---|
committer | cherrypickbot <cherrypickbot@codereview.qt-project.org> | 2020-05-04 15:25:27 +0000 |
commit | ff81116cb967edc6707fe62217ad6a701d4d8d1f (patch) | |
tree | ce7c92630bf77d2a9cc9a68fbea6e83e04469367 | |
parent | dc5fed5555d1c904753e83fd90aeecae547146ce (diff) | |
download | qttools-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.cpp | 28 |
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() |