# # # patch "rcs_import.cc" # from [9904610033d59b175d272825433dc4dd8b2cc02f] # to [9d982ebb8df11a9db36582687ae2b23c605b5b03] # ============================================================ --- rcs_import.cc 9904610033d59b175d272825433dc4dd8b2cc02f +++ rcs_import.cc 9d982ebb8df11a9db36582687ae2b23c605b5b03 @@ -2388,13 +2388,13 @@ public: if (cvs.blobs[e.second].get_digest().is_symbol()) { - // Prevent splitting the branchpoint at e.second. + // Prevent splitting the symbol at e.second. cvs.remove_deps(e.second, bi_b); edges_removed++; } else if (cvs.blobs[bi_a].get_digest().is_symbol()) { - // Prevent splitting the branchpoint at bi_a. + // Prevent splitting the symbol at bi_a. cvs.remove_deps(e.second, bi_a); edges_removed++; } @@ -2443,11 +2443,22 @@ public: } I(pa_deps > 0); - I(pa_deps < total_events); - L(FL("splitting at path a")); - split_blob_at(cvs, e.second, func); - edges_removed++; + if (pa_deps == total_events) + { + // all events in e.second depend in a way on path a, thus + // we should better simply drop the dependency from + // bi_b to e.second. + cvs.remove_deps(e.second, bi_b); + edges_removed++; + } + else + { + I(pa_deps < total_events); + L(FL("splitting at path a")); + split_blob_at(cvs, e.second, func); + edges_removed++; + } } } else