From 2be504b90e84ec054190a4c35978b37d16892ad3 Mon Sep 17 00:00:00 2001 From: saturneric Date: Thu, 25 Jan 2024 21:22:34 +0800 Subject: fix: archive functions not work on windows when there were some non-ascii characters --- src/core/function/gpg/GpgFileOpera.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/core/function/gpg/GpgFileOpera.cpp') diff --git a/src/core/function/gpg/GpgFileOpera.cpp b/src/core/function/gpg/GpgFileOpera.cpp index 94a08c76..ad506c4a 100644 --- a/src/core/function/gpg/GpgFileOpera.cpp +++ b/src/core/function/gpg/GpgFileOpera.cpp @@ -99,6 +99,7 @@ void GpgFileOpera::EncryptDirectory(const KeyArgsList& keys, const QString& out_path, const GpgOperationCallback& cb) { auto ex = std::make_shared(kDataExchangerSize); + auto w_ex = std::weak_ptr(ex); RunGpgOperaAsync( [=](const DataObjectPtr& data_object) -> GpgError { @@ -127,6 +128,9 @@ void GpgFileOpera::EncryptDirectory(const KeyArgsList& keys, in_path, ex, [=](GFError err, const DataObjectPtr&) { GF_CORE_LOG_DEBUG("new archive 2 data exchanger operation, err: {}", err); + if (decltype(ex) p_ex = w_ex.lock(); err < 0 && p_ex != nullptr) { + ex->CloseWrite(); + } }); } @@ -365,6 +369,7 @@ void GpgFileOpera::EncryptSignDirectory(const KeyArgsList& keys, const QString& out_path, const GpgOperationCallback& cb) { auto ex = std::make_shared(kDataExchangerSize); + auto w_ex = std::weak_ptr(ex); RunGpgOperaAsync( [=](const DataObjectPtr& data_object) -> GpgError { @@ -395,6 +400,9 @@ void GpgFileOpera::EncryptSignDirectory(const KeyArgsList& keys, ArchiveFileOperator::NewArchive2DataExchanger( in_path, ex, [=](GFError err, const DataObjectPtr&) { GF_CORE_LOG_DEBUG("new archive 2 fd operation, err: {}", err); + if (decltype(ex) p_ex = w_ex.lock(); err < 0 && p_ex != nullptr) { + ex->CloseWrite(); + } }); } -- cgit v1.2.3