Skip to content

Commit 437820e

Browse files
committed
Fix all memory errors found in 'make test'
Based on pull request #391 by Aaron D. Marasco. Thanks!
1 parent 3b9a09d commit 437820e

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

src/selection.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ selection_flatten(Pool *pool, Queue *selection)
150150
if (!q.count)
151151
{
152152
queue_empty(selection);
153+
queue_free(&q);
153154
return;
154155
}
155156
queue_truncate(selection, 2);
@@ -163,6 +164,7 @@ selection_flatten(Pool *pool, Queue *selection)
163164
selection->elements[0] = SOLVER_SOLVABLE | SOLVER_NOAUTOSET;
164165
selection->elements[1] = q.elements[0];
165166
}
167+
queue_free(&q);
166168
}
167169

168170
/* only supports simple rels plus REL_ARCH */

tools/testsolv.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,16 @@ reportsolutioncb(Solver *solv, void *cbdata)
6666
return 0;
6767
}
6868

69+
static void
70+
free_considered(Pool *pool)
71+
{
72+
if (pool->considered)
73+
{
74+
map_free(pool->considered);
75+
pool->considered = solv_free(pool->considered);
76+
}
77+
}
78+
6979
int
7080
main(int argc, char **argv)
7181
{
@@ -149,7 +159,9 @@ main(int argc, char **argv)
149159
solv = testcase_read(pool, fp, argv[optind], &job, &result, &resultflags);
150160
if (!solv)
151161
{
162+
free_considered(pool);
152163
pool_free(pool);
164+
queue_free(&job);
153165
exit(resultflags == 77 ? 77 : 1);
154166
}
155167
if (reusesolv)
@@ -349,6 +361,7 @@ main(int argc, char **argv)
349361
}
350362
if (reusesolv)
351363
solver_free(reusesolv);
364+
free_considered(pool);
352365
pool_free(pool);
353366
fclose(fp);
354367
}

0 commit comments

Comments
 (0)