reapack

Package manager for REAPER
Log | Files | Refs | Submodules | README | LICENSE

commit ac05f088301ccc547204c3bb1c803b4448436798
parent 4eca19f3eeac488bbef020e8bf88df3ef7a30a58
Author: cfillion <cfillion@users.noreply.github.com>
Date:   Tue, 19 Jan 2016 08:08:20 -0800

fix remote uninstallation on windows

Diffstat:
Msrc/task.cpp | 2+-
Msrc/task.hpp | 4++--
Msrc/transaction.cpp | 21++++++++++++---------
3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/task.cpp b/src/task.cpp @@ -144,7 +144,7 @@ void InstallTask::doRollback() m_newFiles.clear(); } -RemoveTask::RemoveTask(const std::set<Path> &files, Transaction *t) +RemoveTask::RemoveTask(const vector<Path> &files, Transaction *t) : Task(t), m_files(move(files)) { } diff --git a/src/task.hpp b/src/task.hpp @@ -78,7 +78,7 @@ private: class RemoveTask : public Task { public: - RemoveTask(const std::set<Path> &files, Transaction *); + RemoveTask(const std::vector<Path> &files, Transaction *); const std::vector<Path> &removedFiles() const { return m_removedFiles; } @@ -89,7 +89,7 @@ protected: private: void remove(const Path &); - std::set<Path> m_files; + std::vector<Path> m_files; std::vector<Path> m_removedFiles; }; diff --git a/src/transaction.cpp b/src/transaction.cpp @@ -155,22 +155,25 @@ void Transaction::uninstall(const Remote &remote) return; } + vector<Path> allFiles; + for(const auto &entry : entries) { const set<Path> &files = m_registry->getFiles(entry); + allFiles.insert(allFiles.end(), files.begin(), files.end()); - RemoveTask *task = new RemoveTask(files, this); + m_registry->forget(entry); + } - task->onCommit([=] { - const vector<Path> &removedFiles = task->removedFiles(); + RemoveTask *task = new RemoveTask(allFiles, this); - m_registry->forget(entry); + task->onCommit([=] { + const vector<Path> &removedFiles = task->removedFiles(); - m_removals.insert(m_removals.end(), - removedFiles.begin(), removedFiles.end()); - }); + m_removals.insert(m_removals.end(), + removedFiles.begin(), removedFiles.end()); + }); - addTask(task); - } + addTask(task); } void Transaction::cancel()