diff options
author | Jay Freeman (saurik) <saurik@saurik.com> | 2017-03-12 04:19:48 -0700 |
---|---|---|
committer | Jay Freeman (saurik) <saurik@saurik.com> | 2017-03-12 04:19:48 -0700 |
commit | 66f2305d57b04ba04018f98f91494cd4dabd1249 (patch) | |
tree | 25a6d4328af261cc5ba013c8d5b72b3a20c39923 | |
parent | d58cc49d0ec0f1c1862b0476c6a28391815df5aa (diff) | |
download | ldid-66f2305d57b04ba04018f98f91494cd4dabd1249.tar.gz ldid-66f2305d57b04ba04018f98f91494cd4dabd1249.tar.zst ldid-66f2305d57b04ba04018f98f91494cd4dabd1249.zip |
Avoid duplicate Find when remapped during iterate.
-rw-r--r-- | ldid.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -1888,14 +1888,6 @@ void UnionFolder::Open(const std::string &path, const Functor<void (std::streamb } void UnionFolder::Find(const std::string &path, const Functor<void (const std::string &)> &code, const Functor<void (const std::string &, const Functor<std::string ()> &)> &link) const { - parent_.Find(path, fun([&](const std::string &name) { - if (deletes_.find(path + name) == deletes_.end()) - code(name); - }), fun([&](const std::string &name, const Functor<std::string ()> &read) { - if (deletes_.find(path + name) == deletes_.end()) - link(name, read); - })); - for (auto &reset : resets_) Map(path, code, reset.first, fun([&](const Functor<void (std::streambuf &, const void *)> &code) { auto &entry(reset.second); @@ -1909,6 +1901,14 @@ void UnionFolder::Find(const std::string &path, const Functor<void (const std::s code(data, flag); })); })); + + parent_.Find(path, fun([&](const std::string &name) { + if (deletes_.find(path + name) == deletes_.end()) + code(name); + }), fun([&](const std::string &name, const Functor<std::string ()> &read) { + if (deletes_.find(path + name) == deletes_.end()) + link(name, read); + })); } #ifndef LDID_NOTOOLS |