]> git.saurik.com Git - apt.git/blobdiff - apt-pkg/algorithms.cc
Bug fixes, new major version
[apt.git] / apt-pkg / algorithms.cc
index 596473a6526055fc1544999d022289b3ae7e6ee9..49e964f23290c10ed95641bb464e89d4c85f36ef 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: algorithms.cc,v 1.26 1999/10/22 04:05:47 jgg Exp $
+// $Id: algorithms.cc,v 1.29 1999/11/17 01:52:01 jgg Exp $
 /* ######################################################################
 
    Algorithms - A set of misc algorithms
@@ -574,7 +574,7 @@ bool pkgProblemResolver::DoUpgrade(pkgCache::PkgIterator Pkg)
               /* We let the algorithm deal with conflicts on its next iteration,
                it is much smarter than us */
               if (Start->Type == pkgCache::Dep::Conflicts)
-                 continue;
+                 break;
               
               if (Debug == true)
                  clog << "    Reinst Failed early because of " << Start.TargetPkg().Name() << endl;
@@ -738,7 +738,10 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
               if (InOr == true)
               {
                  if (OldEnd == LEnd && OrOp == OrRemove)
-                    Cache.MarkDelete(I);
+                 {
+                    if ((Flags[I->ID] & Protected) != Protected)
+                       Cache.MarkDelete(I);
+                 }               
                  if (OldEnd == LEnd && OrOp == OrKeep)
                     Cache.MarkKeep(I);
               }
@@ -799,7 +802,11 @@ bool pkgProblemResolver::Resolve(bool BrokenFix)
                  if ((Flags[I->ID] & Protected) == Protected)
                  {
                     if (DoUpgrade(Pkg) == true)
+                    {
                        Scores[Pkg->ID] = Scores[I->ID];
+                       break;
+                    }
+                    
                     continue;
                  }