diff options
-rw-r--r-- | clang-tools-extra/clangd/FileDistance.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang-tools-extra/clangd/FileDistance.cpp b/clang-tools-extra/clangd/FileDistance.cpp index 74cbc6110e9..49fe56e0508 100644 --- a/clang-tools-extra/clangd/FileDistance.cpp +++ b/clang-tools-extra/clangd/FileDistance.cpp @@ -72,7 +72,9 @@ FileDistance::FileDistance(StringMap<SourceParams> Sources, for (unsigned I = 0; !Rest.empty(); ++I) { Rest = parent_path(Rest, sys::path::Style::posix); auto NextHash = hash_value(Rest); - DownEdges[NextHash].push_back(Hash); + auto &Down = DownEdges[NextHash]; + if (std::find(Down.begin(), Down.end(), Hash) == Down.end()) + DownEdges[NextHash].push_back(Hash); // We can't just break after MaxUpTraversals, must still set DownEdges. if (I > S.getValue().MaxUpTraversals) { if (Cache.find(Hash) != Cache.end()) |