diff options
Diffstat (limited to 'components/services/install/lib/eazel-install-problem.c')
-rw-r--r-- | components/services/install/lib/eazel-install-problem.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/components/services/install/lib/eazel-install-problem.c b/components/services/install/lib/eazel-install-problem.c index f3c2e3c7b..6409fda20 100644 --- a/components/services/install/lib/eazel-install-problem.c +++ b/components/services/install/lib/eazel-install-problem.c @@ -46,6 +46,7 @@ typedef struct { GList *errors; GList *path; GList *packs; + GList *handled; } GetErrorsForEachData; #ifdef EIP_DEBUG @@ -122,6 +123,10 @@ get_detailed_messages_foreach (GtkObject *foo, GetErrorsForEachData *data) g_assert_not_reached (); } + if (g_list_find (data->handled, pack)) { + return; + } + if (data->path) { previous_pack = (PackageData*)(data->path->data); top_pack = (PackageData*)(g_list_last (data->path)->data); @@ -251,6 +256,9 @@ get_detailed_messages_foreach (GtkObject *foo, GetErrorsForEachData *data) /* Create the path list */ data->path = g_list_prepend (data->path, pack); + data->handled = g_list_prepend (data->handled, pack); + + g_message ("handled %p %s", pack, packagedata_get_readable_name (pack)); if (pack->status != PACKAGE_CANCELLED) { g_list_foreach (pack->depends, (GFunc)get_detailed_messages_foreach, data); @@ -1212,6 +1220,7 @@ eazel_install_problem_tree_to_case (EazelInstallProblem *problem, data.problem = problem; data.errors = (*output); data.path = NULL; + data.handled = NULL; pack_copy = packagedata_copy (pack, TRUE); problem->in_step_problem_mode = FALSE; |