[Aptitude-devel] r2939 - in branches/aptitude-0.3/aptitude: . src/generic/problemresolver
Daniel Burrows
dburrows@costa.debian.org
Fri, 08 Apr 2005 01:03:16 +0000
Author: dburrows
Date: Fri Apr 8 01:03:14 2005
New Revision: 2939
Modified:
branches/aptitude-0.3/aptitude/ChangeLog
branches/aptitude-0.3/aptitude/src/generic/problemresolver/problemresolver.h
branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc
Log:
Fix the evil (and incredibly stupid) segfault.
Modified: branches/aptitude-0.3/aptitude/ChangeLog
==============================================================================
--- branches/aptitude-0.3/aptitude/ChangeLog (original)
+++ branches/aptitude-0.3/aptitude/ChangeLog Fri Apr 8 01:03:14 2005
@@ -2,6 +2,11 @@
* src/generic/problemresolver/problemresolver.h, src/generic/problemresolver/test.cc:
+ Fix the segfault by adding the missing "&", and tweak the output
+ code a bit.
+
+ * src/generic/problemresolver/problemresolver.h, src/generic/problemresolver/test.cc:
+
Add some debugging code to try to track down the current
segfault.
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 8 01:03:14 2005
@@ -344,7 +344,7 @@
* in this solution. The list will live at least as long as
* the reference from which it was retrieved.
*/
- const std::vector<dep> get_broken() const
+ const std::vector<dep> &get_broken() const
{
return real_soln->get_broken_deps();
}
@@ -679,7 +679,7 @@
for(typename std::vector<dep>::const_iterator i=s.get_broken().begin();
i!=s.get_broken().end(); ++i)
- std::cout << *i;
+ std::cout << *i << ", ";
std::cout << " ], score " << s.get_score() << std::endl;
Modified: branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc
==============================================================================
--- branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc (original)
+++ branches/aptitude-0.3/aptitude/src/generic/problemresolver/test.cc Fri Apr 8 01:03:14 2005
@@ -101,6 +101,8 @@
/** The ID of this version. */
unsigned int ID;
+
+ dummy_package(const dummy_package &other);
public:
typedef vector<dummy_version *>::const_iterator version_iterator;
@@ -154,6 +156,8 @@
/** The numerical ID of this version. */
int ID;
+
+ dummy_version(const dummy_version &other);
public:
typedef vector<dummy_dep *>::const_iterator revdep_iterator;
@@ -219,6 +223,8 @@
{
const dummy_version *source;
vector<dummy_version *> target_set;
+
+ dummy_dep(const dummy_dep &other);
public:
typedef vector<dummy_version *>::const_iterator solver_iterator;
@@ -390,6 +396,10 @@
:real_dep(_real_dep)
{
}
+ dep(const dep &other)
+ :real_dep(other.real_dep)
+ {
+ }
typedef wrap_ptr_iter<dummy_version, version> solver_iterator;
@@ -447,6 +457,7 @@
const dep operator*() const
{
+ assert(realiter!=realend);
return *realiter;
}
@@ -593,7 +604,7 @@
for(dummy_resolver::dep::solver_iterator i=d.solvers_begin();
i!=d.solvers_end(); ++i)
out << (*i).get_name() << ", ";
- out << "}, ";
+ out << "}";
return out;
}