]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/policy.cc
CMake: test/libapt: Use a prebuilt GTest library if available
[apt.git] / apt-pkg / policy.cc
index ff59fb0ac6605385e786c93166534fdc46ce8993..3dd6ddac4798621e9194f86ca30fb771336284cb 100644 (file)
@@ -180,14 +180,13 @@ void pkgPolicy::CreatePin(pkgVersionMatch::MatchType Type,string Name,
       Name.erase(found);
    }
 
-   // Allow pinning by wildcards
-   // TODO: Maybe we should always prefer specific pins over non-
-   // specific ones.
-   if (Name[0] == '/' || Name.find_first_of("*[?") != string::npos)
+   // Allow pinning by wildcards - beware of package names looking like wildcards!
+   // TODO: Maybe we should always prefer specific pins over non-specific ones.
+   if ((Name[0] == '/' && Name[Name.length() - 1] == '/') || Name.find_first_of("*[?") != string::npos)
    {
       pkgVersionMatch match(Data, Type);
       for (pkgCache::GrpIterator G = Cache->GrpBegin(); G.end() != true; ++G)
-        if (match.ExpressionMatches(Name, G.Name()))
+        if (Name != G.Name() && match.ExpressionMatches(Name, G.Name()))
         {
            if (Arch.empty() == false)
               CreatePin(Type, string(G.Name()).append(":").append(Arch), Data, Priority);