diff -urN poldek-0.18.6.org/pkgset-install.c poldek-0.18.6/pkgset-install.c --- poldek-0.18.6.org/pkgset-install.c 2004-08-27 23:45:01.761428320 +0200 +++ poldek-0.18.6/pkgset-install.c 2004-08-27 23:47:40.965225664 +0200 @@ -319,7 +319,7 @@ int *ncnfls, i, j, i_best, cnfl_min; int i_ver_eq = -1, i_evr_eq = -1; - DBGF("%s (%d)\n", pkg_snprintf_s(marker), npkgs); + DBGF("marker=%s (%d)\n", marker ? pkg_snprintf_s(marker) : "nil", npkgs); n_assert(npkgs > 0); if (npkgs == 1) return 0; @@ -332,10 +332,10 @@ struct pkg *pkg = candidates[i]; DBGF("%d. %s %s (color white %d, marked %d, %p)\n", i, - pkg_snprintf_s(marker), pkg_snprintf_s0(pkg), + marker ? pkg_snprintf_s(marker) : "nil", pkg_snprintf_s0(pkg), pkg_is_color(pkg, PKG_COLOR_WHITE), pkg_is_marked(pkg), pkg); - if (pkg_eq_name_prefix(marker, pkg)) { + if (marker && pkg_eq_name_prefix(marker, pkg)) { if (i_evr_eq == -1 && pkg_cmp_evr(marker, pkg) == 0) i_evr_eq = i; @@ -758,8 +758,8 @@ for (i=0; i < n_array_size(db_dep->pkgs); i++) { struct pkg *p = n_array_nth(db_dep->pkgs, i); - snprintf(&errmsg[n], sizeof(errmsg) - n, "%s %s", - pkg_is_installed(p) ? "" : " already marked", + snprintf(&errmsg[n], sizeof(errmsg) - n, "%s%s", + pkg_is_installed(p) ? "" : " already marked ", pkg_snprintf_s(p)); logn(LOGERR, "%s", errmsg); @@ -1137,10 +1137,9 @@ n = upg->inst->askpkg_fn(capreq_snprintf_s(req), tomark_candidates, tomark); real_tomark = tomark_candidates[n]; - } - free(tomark_candidates); tomark_candidates = NULL; + } if (marked_for_removal_by_req(real_tomark, req, upg)) { logn(LOGERR, _("%s (cap %s) is required by %s%s"), @@ -1177,6 +1176,7 @@ } else { p = select_successor(pkg, ps, upg, &by_obsoletes); } + #if 0 /* code "moved" above cause to aggresive_greedy */ p = select_pkg(pkg->name, ps->pkgs, upg); if (p == NULL && (upg->inst->flags & INSTS_OBSOLETES)) {