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:
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()