Bläddra i källkod

cmDepends: No dependency-vector erasure in CheckDependencies

Some dependency-generators (such as cmDependsFortran) generate multiple
entries per depender, so erasing the dependency vector for each depender
found loses earlier dependencies.

Signed-off-by: Michael Wild <[email protected]>
Michael Wild 16 år sedan
förälder
incheckning
c66f03adf9
1 ändrade filer med 4 tillägg och 2 borttagningar
  1. 4 2
      Source/cmDepends.cxx

+ 4 - 2
Source/cmDepends.cxx

@@ -181,8 +181,10 @@ bool cmDepends::CheckDependencies(std::istream& internalDepends,
       // kdelibs/khtml this reduces the number of calls from 184k down to 92k,
       // or the time for cmake -E cmake_depends from 0.3 s down to 0.21 s.
       dependerExists = cmSystemTools::FileExists(this->Depender);
-      DependencyVector tmp;
-      validDeps[this->Depender] = tmp;
+      // If we erase validDeps[this->Depender] by overwriting it with an empty
+      // vector, we lose dependencies for dependers that have multiple
+      // entries. No need to initialize the entry, std::map will do so on first
+      // access.
       currentDependencies = &validDeps[this->Depender];
       continue;
       }