--- /dev/null
+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)) {
+