From 1e43755247db3862100dbcc94c259a262080980d Mon Sep 17 00:00:00 2001 From: muyuankai Date: Sun, 28 Apr 2024 09:36:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D7z=E5=8A=A0=E5=AF=86?= =?UTF-8?q?=E5=8E=8B=E7=BC=A9=E6=96=87=E4=BB=B6=E8=A7=A3=E5=8E=8B=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修复7z加密压缩文件解压异常问题 Bug: https://pms.uniontech.com/bug-view-252509.html Log: 修复7z加密压缩文件解压异常问题 --- .../archiveinterface/cliinterface.cpp | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/3rdparty/interface/archiveinterface/cliinterface.cpp b/3rdparty/interface/archiveinterface/cliinterface.cpp index 62ea7433..8949fd08 100644 --- a/3rdparty/interface/archiveinterface/cliinterface.cpp +++ b/3rdparty/interface/archiveinterface/cliinterface.cpp @@ -88,6 +88,8 @@ PluginFinishType CliInterface::extractFiles(const QList &files, const bool bDlnfs = m_common->isSubpathOfDlnfs(options.strTargetPath); setProperty("dlnfs", bDlnfs); ArchiveData arcData = DataManager::get_instance().archiveData(); + m_files = files; + m_extractOptions = options; if(!bDlnfs) { if(arcData.listRootEntry.isEmpty() && options.qSize < FILE_MAX_SIZE) { @@ -95,19 +97,6 @@ PluginFinishType CliInterface::extractFiles(const QList &files, const setProperty("list", "tmpList"); list(); setProperty("list", ""); - connect(m_process, QOverload::of(&QProcess::finished), this, - [=](int exitCode, QProcess::ExitStatus){ - if(m_process) { - if(exitCode != 0) { - emit signalprogress(100); - emit signalFinished(m_finishType); - return PFT_Error; - } - m_process->deleteLater(); - m_process = nullptr; - extractFiles(files, options, property("dlnfs").toBool()); - } - }); return PFT_Nomral; } } @@ -706,6 +695,18 @@ bool CliInterface::runProcess(const QString &programName, const QStringList &arg connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(extractProcessFinished(int, QProcess::ExitStatus))); } else if(property("list").toString() != "tmpList"){ connect(m_process, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(processFinished(int, QProcess::ExitStatus))); + } else { + connect(m_process, QOverload::of(&QProcess::finished), this, + [=](int exitCode, QProcess::ExitStatus){ + if(m_process) { + if(exitCode != 0) { + emit signalprogress(100); + emit signalFinished(PFT_Error); + } + deleteProcess(); + extractFiles(m_files, m_extractOptions, property("dlnfs").toBool()); + } + }); } m_stdOutData.clear();