From 0dc74c8b08350a24ed1ced62286d24b3d6f8f743 Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Sat, 6 Jun 2020 10:16:37 +0800 Subject: fix some memory leaks --- src/fqterm/fqterm_screen.cpp | 3 +++ src/protocol/fqterm_ssh_socket.cpp | 1 + src/terminal/internal/fqterm_zmodem.cpp | 6 +++++- src/ui/imageviewer/imageviewer_origin.cpp | 34 +++++++++++++++---------------- src/ui/imageviewer/imageviewer_origin.h | 4 ++-- 5 files changed, 27 insertions(+), 21 deletions(-) diff --git a/src/fqterm/fqterm_screen.cpp b/src/fqterm/fqterm_screen.cpp index de51381..897a928 100644 --- a/src/fqterm/fqterm_screen.cpp +++ b/src/fqterm/fqterm_screen.cpp @@ -142,6 +142,9 @@ FQTermScreen::~FQTermScreen() { delete preedit_line_; delete tmp_im_query_; + + delete englishFont_; + delete nonEnglishFont_; } bool FQTermScreen::event(QEvent *e) { diff --git a/src/protocol/fqterm_ssh_socket.cpp b/src/protocol/fqterm_ssh_socket.cpp index e273029..12cecbc 100644 --- a/src/protocol/fqterm_ssh_socket.cpp +++ b/src/protocol/fqterm_ssh_socket.cpp @@ -203,6 +203,7 @@ void FQTermSSHSocket::kexOK() #ifdef WIN32 free(hosts_file); #endif + free(hosts); } key_exchanger_->hostKeyHash(conn_info.ssh_proto_info.hash); diff --git a/src/terminal/internal/fqterm_zmodem.cpp b/src/terminal/internal/fqterm_zmodem.cpp index 93f698d..f67cd4b 100644 --- a/src/terminal/internal/fqterm_zmodem.cpp +++ b/src/terminal/internal/fqterm_zmodem.cpp @@ -608,7 +608,11 @@ FQTermZmodem::FQTermZmodem(FQTermConfig *config, FQTermTelnet *netinterface, int } -FQTermZmodem::~FQTermZmodem(){} +FQTermZmodem::~FQTermZmodem() +{ + if (info.buffer != NULL) + free(info.buffer); +} int FQTermZmodem::ZmodemTInit(ZModem *info) { int err; diff --git a/src/ui/imageviewer/imageviewer_origin.cpp b/src/ui/imageviewer/imageviewer_origin.cpp index 6e3ceae..7f0e88f 100644 --- a/src/ui/imageviewer/imageviewer_origin.cpp +++ b/src/ui/imageviewer/imageviewer_origin.cpp @@ -32,7 +32,6 @@ #include "fqterm_canvas.h" #include "fqterm_config.h" -#include "fqterm_exif_extractor.h" #include "fqterm_filedialog.h" #include "fqterm_path.h" #include "fqterm_trace.h" @@ -47,7 +46,7 @@ namespace FQTerm { if (!isHidden()) canvas_->hide(); - QString exifInfo = QString::fromStdString(exifExtractor_->extractExifInfo(model_->filePath(tree_->currentIndex()).toLocal8Bit().data())); + QString exifInfo = QString::fromStdString(exifExtractor_.extractExifInfo(model_->filePath(tree_->currentIndex()).toLocal8Bit().data())); bool resized = false; if (exifInfo != "") { @@ -96,7 +95,6 @@ namespace FQTerm { setWindowTitle(tr("FQTerm Image Viewer")); ItemDelegate* itemDelegate = new ItemDelegate; - exifExtractor_ = new ExifExtractor; exifTable_ = new ExifTable(this); exifTable_->setTextFormat(Qt::RichText); exifTable_->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); @@ -237,23 +235,23 @@ namespace FQTerm { void FQTermImageOrigin::showFullExifInfo() { - QString exifInfo = QString::fromStdString(exifExtractor_->extractExifInfo(model_->filePath(tree_->currentIndex()).toLocal8Bit().data())); + QString exifInfo = QString::fromStdString(exifExtractor_.extractExifInfo(model_->filePath(tree_->currentIndex()).toLocal8Bit().data())); QString comment; - if ((*exifExtractor_)["UserComment"].length() > 8) { + if (exifExtractor_["UserComment"].length() > 8) { - QString commentEncoding = QString::fromStdString((*exifExtractor_)["UserComment"].substr(0, 8)); + QString commentEncoding = QString::fromStdString(exifExtractor_["UserComment"].substr(0, 8)); if (commentEncoding.startsWith("UNICODE")) { //UTF-16 QTextCodec* c = QTextCodec::codecForName("UTF-16"); - comment = c->toUnicode((*exifExtractor_)["UserComment"].substr(8).c_str()); + comment = c->toUnicode(exifExtractor_["UserComment"].substr(8).c_str()); } else if (commentEncoding.startsWith("JIS")) { //JIS X 0208 QTextCodec* c = QTextCodec::codecForName("JIS X 0208"); - comment = c->toUnicode((*exifExtractor_)["UserComment"].substr(8).c_str()); + comment = c->toUnicode(exifExtractor_["UserComment"].substr(8).c_str()); } else { - comment = QString::fromStdString((*exifExtractor_)["UserComment"].substr(8)); + comment = QString::fromStdString(exifExtractor_["UserComment"].substr(8)); } } @@ -294,17 +292,17 @@ namespace FQTerm { exifTable_->clear(); QString exifInfoToShow = "" + + tr("Model") + " : " + QString::fromStdString(exifExtractor_["Model"]) + "" + "" + + tr("ExposureTime") + " : " + QString::fromStdString(exifExtractor_["ExposureTime"]) + "" + ""; + + tr("FocalLength") + " : " + QString::fromStdString(exifExtractor_["FocalLength"]) + ""; exifTable_->setText(exifInfoToShow); if (!isHidden() && exifTable_->isHidden()) { diff --git a/src/ui/imageviewer/imageviewer_origin.h b/src/ui/imageviewer/imageviewer_origin.h index 15d9c62..56fd262 100644 --- a/src/ui/imageviewer/imageviewer_origin.h +++ b/src/ui/imageviewer/imageviewer_origin.h @@ -23,12 +23,12 @@ #include "pictureflow.h" #include "fqtermimage.h" +#include "fqterm_exif_extractor.h" namespace FQTerm { class FQTermCanvas; - class ExifExtractor; class ItemDelegate : public QItemDelegate { public: @@ -97,7 +97,7 @@ namespace FQTerm QMenuBar* menuBar_; QComboBox* comboBox_; FQTermConfig* config_; - ExifExtractor* exifExtractor_; + ExifExtractor exifExtractor_; ExifTable* exifTable_; QGridLayout* layout_; bool isExifTableShown_; -- cgit v1.2.3
" - + tr("Model") + " : " + QString::fromStdString((*exifExtractor_)["Model"]) + "" - + QString::fromStdString((*exifExtractor_)["DateTime"]) + "" - + QString::fromStdString((*exifExtractor_)["Flash"]) + "" + + QString::fromStdString(exifExtractor_["DateTime"]) + "" + + QString::fromStdString(exifExtractor_["Flash"]) + "
" - + tr("ExposureTime") + " : " + QString::fromStdString((*exifExtractor_)["ExposureTime"]) + "" - + tr("FNumber") + " : " + QString::fromStdString((*exifExtractor_)["FNumber"]) + "" - + tr("ISO") + " : " + QString::fromStdString((*exifExtractor_)["ISOSpeedRatings"]) + "" + + tr("FNumber") + " : " + QString::fromStdString(exifExtractor_["FNumber"]) + "" + + tr("ISO") + " : " + QString::fromStdString(exifExtractor_["ISOSpeedRatings"]) + "
" - + tr("FocalLength") + " : " + QString::fromStdString((*exifExtractor_)["FocalLength"]) + "" - + tr("MeteringMode") + " : " + QString::fromStdString((*exifExtractor_)["MeteringMode"]) + "" - + tr("ExposureBias") + " : " + QString::fromStdString((*exifExtractor_)["ExposureBiasValue"]) + "
" + + tr("MeteringMode") + " : " + QString::fromStdString(exifExtractor_["MeteringMode"]) + "" + + tr("ExposureBias") + " : " + QString::fromStdString(exifExtractor_["ExposureBiasValue"]) + "