[Aptitude-devel] r3184 - in branches/aptitude-0.3/aptitude: . src/generic src/generic/problemresolver
Daniel Burrows
dburrows@costa.debian.org
Fri, 29 Apr 2005 02:01:01 +0000
Author: dburrows
Date: Fri Apr 29 02:00:58 2005
New Revision: 3184
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc
branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.h
branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h
Log:
More segfault fixing.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Fri Apr 29 02:00:58 2005
@@ -1,5 +1,11 @@
2005-04-28 Daniel Burrows <dburrows@debian.org>
+ * src/generic/aptitude_resolver.h, src/generic/aptitude_resolver.cc, src/generic/problemresolver/problemresolver.h:
+
+ Fix a monumentally stupid decision (storing references to a
+ universe in the problem resolver), fixing the segfault caused by
+ the previous segfault's fix.
+
* src/cmdline/cmdline_dump_resolver.cc, src/generic/aptcache.cc, src/generic/aptitude_resolver.cc, src/generic/aptitude_resolver.h:
Carry a backpointer to the cache around in all the resolver glue
Modified: branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc (original)
+++ branches/aptitude-0.3/aptitude/src/generic/aptitude_resolver.cc Fri Apr 29 02:00:58 2005
@@ -25,8 +25,7 @@
int max_successors,
int resolution_score,
aptitudeDepCache *cache)
- :generic_problem_resolver<aptitude_universe>(step_penalty, broken_penalty, infinity, max_successors, resolution_score, aptitude_universe(cache)),
- universe(cache)
+ :generic_problem_resolver<aptitude_universe>(step_penalty, broken_penalty, infinity, max_successors, resolution_score, aptitude_universe(cache))
{
}
@@ -37,11 +36,11 @@
{
// Should I stick with APT iterators instead? This is a bit more
// convenient, though..
- for(aptitude_universe::package_iterator pi=aptitude_universe::package_iterator(universe.get_cache()->PkgBegin(), universe.get_cache());
+ for(aptitude_universe::package_iterator pi=aptitude_universe::package_iterator(get_universe().get_cache()->PkgBegin(), get_universe().get_cache());
!pi.end(); ++pi)
{
const aptitude_universe::package &p=*pi;
- aptitudeDepCache::aptitude_state &state=universe.get_cache()->get_ext_state(p.get_pkg());
+ aptitudeDepCache::aptitude_state &state=get_universe().get_cache()->get_ext_state(p.get_pkg());
for(aptitude_universe::package::version_iterator vi=p.versions_begin(); !vi.end(); ++vi)
{
@@ -66,7 +65,7 @@
add_version_score(v, keep_score);
else if(v.get_ver().end())
add_version_score(v, remove_score);
- else if(v.get_ver()==(*universe.get_cache())[p.get_pkg()].CandidateVerIter(*universe.get_cache()))
+ else if(v.get_ver()==(*get_universe().get_cache())[p.get_pkg()].CandidateVerIter(*get_universe().get_cache()))
{
// Could try harder not to break holds.
if(p.get_pkg().CurrentVer().end())
@@ -97,7 +96,7 @@
int optional,
int extra)
{
- for(aptitude_universe::package_iterator pi=aptitude_universe::package_iterator(universe.get_cache()->PkgBegin(), universe.get_cache());
+ for(aptitude_universe::package_iterator pi=aptitude_universe::package_iterator(get_universe().get_cache()->PkgBegin(), get_universe().get_cache());
!pi.end(); ++pi)
for(aptitude_universe::package::version_iterator vi=(*pi).versions_begin(); !vi.end(); ++vi)
{
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 Fri Apr 29 02:00:58 2005
@@ -1252,7 +1252,6 @@
class aptitude_resolver:public generic_problem_resolver<aptitude_universe>
{
- const aptitude_universe universe;
public:
aptitude_resolver(int step_score, int broken_score,
int infinity, int max_successors,
Modified: branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h (original)
+++ branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h Fri Apr 29 02:00:58 2005
@@ -512,7 +512,7 @@
int full_solution_score;
/** The universe in which we are solving problems. */
- const PackageUniverse &universe;
+ const PackageUniverse universe;
/** The internal scores to apply to individual package
* versions.
@@ -821,6 +821,11 @@
delete[] version_scores;
}
+ const PackageUniverse &get_universe()
+ {
+ return universe;
+ }
+
/** Enables or disables debugging. Debugging is initially
* disabled.
*/