diff options
author | Ilya Biryukov <ibiryukov@google.com> | 2019-11-14 14:43:07 +0100 |
---|---|---|
committer | Ilya Biryukov <ibiryukov@google.com> | 2019-11-14 14:43:29 +0100 |
commit | 5a9547b007090cf9c082ac84490310ee26d8b338 (patch) | |
tree | d3fdf4eb6da4ed33a964ebeca8b2bbc2c77f540c /clang-tools-extra/clangd/index/Merge.cpp | |
parent | cb47b8783017a76c5f2e4b974cfd6b22c9f1d5ff (diff) | |
download | bcm5719-llvm-5a9547b007090cf9c082ac84490310ee26d8b338.tar.gz bcm5719-llvm-5a9547b007090cf9c082ac84490310ee26d8b338.zip |
[clangd] Simplify the code in Index::refs
Summary:
While here, also fix potential UB in MergeIndex.
Thanks Kadir for finding this!
Reviewers: hokein
Reviewed By: hokein
Subscribers: merge_guards_bot, MaskRay, jkorous, arphaman, kadircet, usaxena95, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D70225
Diffstat (limited to 'clang-tools-extra/clangd/index/Merge.cpp')
-rw-r--r-- | clang-tools-extra/clangd/index/Merge.cpp | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/clang-tools-extra/clangd/index/Merge.cpp b/clang-tools-extra/clangd/index/Merge.cpp index 8d8150a1313..0cef7dc7630 100644 --- a/clang-tools-extra/clangd/index/Merge.cpp +++ b/clang-tools-extra/clangd/index/Merge.cpp @@ -107,23 +107,24 @@ bool MergedIndex::refs(const RefsRequest &Req, More |= Dynamic->refs(Req, [&](const Ref &O) { DynamicIndexFileURIs.insert(O.Location.FileURI); Callback(O); + assert(Remaining != 0); --Remaining; }); if (Remaining == 0 && More) return More; // We return less than Req.Limit if static index returns more refs for dirty // files. - More |= Static->refs(Req, [&](const Ref &O) { + bool StaticHadMore = Static->refs(Req, [&](const Ref &O) { if (DynamicIndexFileURIs.count(O.Location.FileURI)) return; // ignore refs that have been seen from dynamic index. - if (Remaining == 0) + if (Remaining == 0) { More = true; - if (Remaining > 0) { - --Remaining; - Callback(O); + return; } + --Remaining; + Callback(O); }); - return More; + return More || StaticHadMore; } void MergedIndex::relations( |