Skip to content

Commit 11c05b7

Browse files
committed
Fix add_complex_recommends() selecting conflicted packages in rare cases
Installing a recommended package can lead to a different recommended package becoming confliced, so we have to re-check the candidates. Fixes issue #399
1 parent a273ff9 commit 11c05b7

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

src/solver.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ createbranch(Solver *solv, int level, Queue *dq, Id p, Id data)
11981198
int i;
11991199
IF_POOLDEBUG (SOLV_DEBUG_POLICY)
12001200
{
1201-
POOL_DEBUG (SOLV_DEBUG_POLICY, "creating a branch:\n");
1201+
POOL_DEBUG (SOLV_DEBUG_POLICY, "creating a branch [data=%d]:\n", data);
12021202
for (i = 0; i < dq->count; i++)
12031203
POOL_DEBUG (SOLV_DEBUG_POLICY, " - %s\n", pool_solvid2str(pool, dq->elements[i]));
12041204
}
@@ -1218,7 +1218,7 @@ takebranch(Solver *solv, int pos, int end, const char *msg, int disablerules)
12181218
#if 0
12191219
{
12201220
int i;
1221-
printf("branch group level %d [%d-%d] %d %d:\n", solv->branches.elements[end - 1], start, end, solv->branches.elements[end - 4], solv->branches.elements[end - 3]);
1221+
printf("branch group level %d [%d-%d] %d %d:\n", solv->branches.elements[end - 1], end - solv->branches.elements[end - 2], end, solv->branches.elements[end - 4], solv->branches.elements[end - 3]);
12221222
for (i = end - solv->branches.elements[end - 2]; i < end - 4; i++)
12231223
printf("%c %c%s\n", i == pos ? 'x' : ' ', solv->branches.elements[i] >= 0 ? ' ' : '-', pool_solvid2str(pool, solv->branches.elements[i] >= 0 ? solv->branches.elements[i] : -solv->branches.elements[i]));
12241224
}
@@ -2089,15 +2089,15 @@ add_complex_recommends(Solver *solv, Id rec, Queue *dq, Map *dqmap)
20892089
queue_truncate(dq, blkcnt);
20902090
break;
20912091
}
2092+
if (solv->decisionmap[p] < 0)
2093+
continue;
20922094
if (dqmap)
20932095
{
20942096
if (!MAPTST(dqmap, p))
20952097
continue;
20962098
}
20972099
else
20982100
{
2099-
if (solv->decisionmap[p] < 0)
2100-
continue;
21012101
if (solv->process_orphans && solv->installed && pool->solvables[p].repo == solv->installed && (solv->droporphanedmap_all || (solv->droporphanedmap.size && MAPTST(&solv->droporphanedmap, p - solv->installed->start))))
21022102
continue;
21032103
}

0 commit comments

Comments
 (0)