[Aptitude-devel] r2970 - in branches/aptitude-0.3/aptitude: . src/generic/problemresolver
Daniel Burrows
dburrows@costa.debian.org
Sat, 09 Apr 2005 19:12:52 +0000
Author: dburrows
Date: Sat Apr 9 19:12:49 2005
New Revision: 2970
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/generic/problemresolver/aptitude_resolver.h
Log:
Fix an infinite loop.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Sat Apr 9 19:12:49 2005
@@ -2,6 +2,12 @@
* src/generic/problemresolver/aptitude_resolver.h:
+ When normalizing solver-iterators, include the code to advance
+ the dependency inside the loop that runs till we run out of deps
+ (so the program doesn't go into an infinite loop..oops..).
+
+ * src/generic/problemresolver/aptitude_resolver.h:
+
Add code to drop self-conflicts.
* src/generic/problemresolver/aptitude_resolver.h:
Modified: branches/aptitude-0.3/aptitude/src/generic/problemresolver/aptitude_resolver.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/problemresolver/aptitude_resolver.h (original)
+++ branches/aptitude-0.3/aptitude/src/generic/problemresolver/aptitude_resolver.h Sat Apr 9 19:12:49 2005
@@ -434,21 +434,25 @@
else
++prv_lst;
}
- }
- if(!(dep_lst->CompareOp & pkgCache::Dep::Or))
- finished=true;
- else
- {
- ++dep_lst;
- // Since we aren't finished, dep_lst should be valid.
- assert(!dep_lst.end());
- ver_lst=dep_lst.TargetPkg().VersionList();
-
- // Only set the prv_lst to non-end if there is no target
- // version.
- if(!dep_lst.TargetVer())
- prv_lst=dep_lst.TargetPkg().ProvidesList();
+ // No more target versions or providers of the target;
+ // increment the dependency list if we aren't yet at the
+ // end of the OR group.
+
+ if(!(dep_lst->CompareOp & pkgCache::Dep::Or))
+ finished=true;
+ else
+ {
+ ++dep_lst;
+ // Since we aren't finished, dep_lst should still be
+ // valid.
+ assert(!dep_lst.end());
+ ver_lst=dep_lst.TargetPkg().VersionList();
+
+ // Only set the prv_lst to non-end if there is no target
+ // version.
+ prv_lst=dep_lst.TargetPkg().ProvidesList();
+ }
}
}
else