]> git.ipfire.org Git - thirdparty/libsolv.git/commitdiff
Fix all memory errors found in 'make test'
authorMichael Schroeder <mls@suse.de>
Wed, 3 Jun 2020 12:27:10 +0000 (14:27 +0200)
committerMichael Schroeder <mls@suse.de>
Wed, 3 Jun 2020 12:27:10 +0000 (14:27 +0200)
Based on pull request #391 by Aaron D. Marasco. Thanks!

src/selection.c
tools/testsolv.c

index 5f01e2b501f8feb4befa22e4dfb945649ba05f04..a8e60f79005dff864a9b2e820934752ebf50bea6 100644 (file)
@@ -150,6 +150,7 @@ selection_flatten(Pool *pool, Queue *selection)
   if (!q.count)
     {
       queue_empty(selection);
+      queue_free(&q);
       return;
     }
   queue_truncate(selection, 2);
@@ -163,6 +164,7 @@ selection_flatten(Pool *pool, Queue *selection)
       selection->elements[0] = SOLVER_SOLVABLE | SOLVER_NOAUTOSET;
       selection->elements[1] = q.elements[0];
     }
+  queue_free(&q);
 }
 
 /* only supports simple rels plus REL_ARCH */
index 18dfcfe1c87bad0f21b8378e3cd821c3bad5eeca..a9e67ec71e34fce0055a1f6ef4c5145dae6c87d3 100644 (file)
@@ -66,6 +66,16 @@ reportsolutioncb(Solver *solv, void *cbdata)
   return 0;
 }
 
+static void
+free_considered(Pool *pool)
+{
+  if (pool->considered)
+    {
+      map_free(pool->considered);
+      pool->considered = solv_free(pool->considered);
+    }
+}
+
 int
 main(int argc, char **argv)
 {
@@ -149,7 +159,9 @@ main(int argc, char **argv)
          solv = testcase_read(pool, fp, argv[optind], &job, &result, &resultflags);
          if (!solv)
            {
+             free_considered(pool);
              pool_free(pool);
+             queue_free(&job);
              exit(resultflags == 77 ? 77 : 1);
            }
          if (reusesolv)
@@ -349,6 +361,7 @@ main(int argc, char **argv)
        }
       if (reusesolv)
        solver_free(reusesolv);
+      free_considered(pool);
       pool_free(pool);
       fclose(fp);
     }