From aa7796db956c80ceb0975afef216a98c800ad592 Mon Sep 17 00:00:00 2001 From: Michael Schroeder Date: Tue, 18 Dec 2012 13:36:53 +0100 Subject: [PATCH] don't access r->p after solver_addrule is called, as it may realloc the rules Thanks valgrind! --- src/rules.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/rules.c b/src/rules.c index 9b9b8aa..f6facf4 100644 --- a/src/rules.c +++ b/src/rules.c @@ -2414,14 +2414,15 @@ solver_addchoicerules(Solver *solv) if (i == q.count) continue; /* already added that one */ } - d = q.count ? pool_queuetowhatprovides(pool, &q) : 0; - solver_addrule(solv, r->p, d); - queue_push(&solv->weakruleq, solv->nrules - 1); - solv->choicerules_ref[solv->nrules - 1 - solv->choicerules] = rid; + lastaddedp = r->p; lastaddedd = d; lastaddedcnt = q.count; + + solver_addrule(solv, r->p, d); + queue_push(&solv->weakruleq, solv->nrules - 1); + solv->choicerules_ref[solv->nrules - 1 - solv->choicerules] = rid; #if 0 printf("OLD "); solver_printrule(solv, SOLV_DEBUG_RESULT, solv->rules + rid); -- 2.7.4