optimization: check key storage before doing the forward
[platform/upstream/libsolv.git] / src / transaction.c
index a021f19..69c12d9 100644 (file)
@@ -223,12 +223,12 @@ obsoleted_by_pseudos_only(Transaction *trans, Id p)
     return 0;
   queue_init(&q);
   transaction_all_obs_pkgs(trans, p, &q);
-  if (!q.count)
-    return 0;
   for (i = 0; i < q.count; i++)
     if (!is_pseudo_package(pool, pool->solvables + q.elements[i]))
-      return 0;
-  return 1;
+      break;
+  i = !q.count || i < q.count ? 0 : 1;
+  queue_free(&q);
+  return i;
 }
 
 /*
@@ -267,7 +267,7 @@ transaction_type(Transaction *trans, Id p, int mode)
       if (s->repo == pool->installed)
        {
          /* check if we're obsoleted by pseudos only */
-         if (obsoleted_by_pseudos_only(trans, pool->solvables - s))
+         if (obsoleted_by_pseudos_only(trans, s - pool->solvables))
            return SOLVER_TRANSACTION_ERASE;
          return SOLVER_TRANSACTION_IGNORE;     /* ignore as we're being obsoleted */
        }