[Aptitude-devel] r2966 - in branches/aptitude-0.3/aptitude: . src/generic/problemresolver
Daniel Burrows
dburrows@costa.debian.org
Sat, 09 Apr 2005 15:24:13 +0000
Author: dburrows
Date: Sat Apr 9 15:24:10 2005
New Revision: 2966
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/generic/problemresolver/aptitude_resolver.h
Log:
Fix the solver_iterator-related crashes.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Sat Apr 9 15:24:10 2005
@@ -2,6 +2,12 @@
* src/generic/problemresolver/aptitude_resolver.h:
+ Assert that dep_lst is non-end BEFORE possibly pushing it off
+ the end, make dep_lst's end-ness part of the end() condition for
+ solver_iterators, and test against end() instead of finished.
+
+ * src/generic/problemresolver/aptitude_resolver.h:
+
Fix the dep_iterator to iterate over all dependencies instead of
none.
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 15:24:10 2005
@@ -398,7 +398,7 @@
solver_iterator &operator++()
{
// Note that we're OK as long as dependencies last.
- while(!finished)
+ while(!end())
{
// First, advance whatever needs to be advanced next in the
// sub-list.
@@ -431,9 +431,9 @@
finished=true;
else
{
- ++dep_lst;
// Since we aren't finished, dep_lst should be valid.
assert(!dep_lst.end());
+ ++dep_lst;
ver_lst=dep_lst.TargetPkg().VersionList();
prv_lst=dep_lst.TargetPkg().ProvidesList();
}
@@ -442,7 +442,7 @@
aptitude_resolver_version operator*() const
{
- assert(!finished);
+ assert(!end());
if(!ver_lst.end())
return aptitude_resolver_version(ver_lst.ParentPkg(),ver_lst);
@@ -450,9 +450,9 @@
return aptitude_resolver_version(const_cast<pkgCache::PrvIterator &>(prv_lst).OwnerPkg(),const_cast<pkgCache::PrvIterator &>(prv_lst).OwnerVer());
}
- bool end()
+ bool end() const
{
- return finished;
+ return finished || dep_lst.end();
}
};