[Aptitude-devel] r3080 - in branches/aptitude-0.3/aptitude: . src/generic
Daniel Burrows
dburrows@costa.debian.org
Sat, 23 Apr 2005 18:12:35 +0000
Author: dburrows
Date: Sat Apr 23 18:12:32 2005
New Revision: 3080
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h
Log:
Make the conversion layer's reverse dep iterator *actually* go through
provides instead of just saying it does.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Sat Apr 23 18:12:32 2005
@@ -2,6 +2,11 @@
* src/generic/aptitude_resolver.h:
+ Fix a silly logic error in the revdep_iterator that caused
+ reverse dependencies through Provides: to not be considered.
+
+ * src/generic/aptitude_resolver.h:
+
Don't generate inapplicable revdeps, even if they're the first
item in the list.
Modified: branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h (original)
+++ branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h Sat Apr 23 18:12:32 2005
@@ -336,19 +336,29 @@
(!dep_lst.IsCritical() || !applicable()))
++dep_lst;
- // When we've run out of provides, give up..
- while(dep_lst.end() && !prv_lst.end())
+ if(dep_lst.end() && !provides_open)
{
- if(!provides_open)
+ assert(prv_lst.end());
+ prv_lst=ver.ProvidesList();
+ if(!prv_lst.end())
{
- provides_open=true;
- prv_lst=ver.ProvidesList();
+ dep_lst=prv_lst.ParentPkg().RevDependsList();
+ while(!dep_lst.end() &&
+ (!dep_lst.IsCritical() || !applicable()))
+ ++dep_lst;
}
- else
- ++prv_lst;
+ provides_open=true;
+ }
+
+ // When we've run out of provides, give up..
+ while(dep_lst.end() && !prv_lst.end())
+ {
+ assert(provides_open);
+ ++prv_lst;
if(!prv_lst.end())
{
+ assert(!prv_lst.ParentPkg().end());
dep_lst=prv_lst.ParentPkg().RevDependsList();
while(!dep_lst.end() &&
@@ -391,6 +401,10 @@
// but those are handled in the usual way).
if(!v.end())
dep_lst=v.ParentPkg().RevDependsList();
+ else
+ // Immediately flag this as an end iterator, and avoid crashing
+ // in normalize() when we look at v.ProvidesList().
+ provides_open=true;
normalize();
}