From 9dcd291894b5555a2cf1cddfe0dd094081a2b9d3 Mon Sep 17 00:00:00 2001 From: wh201906 Date: Mon, 21 Mar 2022 15:45:31 +0800 Subject: [PATCH] Misc Terminate the child thread properly Optimize write logic --- src/module/mifare.cpp | 6 +++++- src/ui/mainwindow.cpp | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/module/mifare.cpp b/src/module/mifare.cpp index 7f7398e..0531a0c 100644 --- a/src/module/mifare.cpp +++ b/src/module/mifare.cpp @@ -691,10 +691,14 @@ void Mifare::writeSelected(TargetType targetType) { result = _writeblk(item, KEY_B, keyBList->at(data_b2s(item)), dataList->at(item), TARGET_MIFARE); } - if(!result) + if(!result && keyAList->at(data_b2s(item)) != "FFFFFFFFFFFF") { result = _writeblk(item, KEY_A, "FFFFFFFFFFFF", dataList->at(item), TARGET_MIFARE); } + if(!result && keyBList->at(data_b2s(item)) != "FFFFFFFFFFFF") // for access bits like "80 f7 87", the block can only be written with keyB + { + result = _writeblk(item, KEY_B, "FFFFFFFFFFFF", dataList->at(item), TARGET_MIFARE); + } } else // key doesn't matter when writing to Chinese Magic Card and Emulator Memory { diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index d2e338b..59efc1d 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -30,7 +30,9 @@ MainWindow::MainWindow(QWidget *parent): settings->setIniCodec("UTF-8"); pm3Thread = new QThread(this); + connect(QApplication::instance(), &QApplication::aboutToQuit, pm3Thread, &QThread::quit); pm3 = new PM3Process(pm3Thread); + connect(pm3Thread, &QThread::finished, pm3, &PM3Process::deleteLater); pm3Thread->start(); pm3state = false; clientWorkingDir = new QDir;