opkg: (leak fixing, day 1) lots and lots of memory leaks fixed
[oweals/opkg-lede.git] / libopkg / pkg_vec.c
index 2d22d912ec6a7c1fc818402ad254edc4dfbdfcb5..72f9d7d366e083cd8f7e07db39917fbdedca12de 100644 (file)
@@ -1,4 +1,4 @@
-/* pkg_vec.c - the itsy package management system
+/* pkg_vec.c - the opkg package management system
 
    Steven M. Ayer
    
    General Public License for more details.
 */
 
-#include <stdlib.h>
+#include "includes.h"
 #include <fnmatch.h>
 #include "xregex.h"
-#include "opkg.h"
 #include "pkg.h"
+#include "opkg_message.h"
 
 pkg_vec_t * pkg_vec_alloc(void)
 {
@@ -36,7 +36,12 @@ pkg_vec_t * pkg_vec_alloc(void)
 
 void pkg_vec_free(pkg_vec_t *vec)
 {
-    free(vec->pkgs);
+    if (!vec)
+      return;
+
+    if (vec->pkgs)
+      free(vec->pkgs);
+
     free(vec);
 }
 
@@ -101,7 +106,6 @@ pkg_t *pkg_vec_insert_merge(pkg_vec_t *vec, pkg_t *pkg, int set_status,opkg_conf
 
 void pkg_vec_insert(pkg_vec_t *vec, const pkg_t *pkg)
 {
-     int i;
      int found = 0;
 
 #if 0
@@ -132,10 +136,9 @@ int pkg_vec_contains(pkg_vec_t *vec, pkg_t *apkg)
      return 0;
 }
 
-typedef int (*compare_fcn_t)(const void *, const void *);
-void pkg_vec_sort(pkg_vec_t *vec, int (*compar)(pkg_t *, pkg_t *))
+void pkg_vec_sort(pkg_vec_t *vec, compare_fcn_t compar)
 {
-     qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
+     qsort(vec->pkgs, vec->len, sizeof(pkg_t *), compar);
 }
 
 int pkg_vec_clear_marks(pkg_vec_t *vec)
@@ -191,7 +194,6 @@ void abstract_pkg_vec_free(abstract_pkg_vec_t *vec)
  */
 void abstract_pkg_vec_insert(abstract_pkg_vec_t *vec, abstract_pkg_t *pkg)
 {
-    int i;
 
 #if 0
     /* look for a duplicate pkg by name */
@@ -229,8 +231,8 @@ int abstract_pkg_vec_contains(abstract_pkg_vec_t *vec, abstract_pkg_t *apkg)
      return 0;
 }
 
-void abstract_pkg_vec_sort(pkg_vec_t *vec, int (*compar)(abstract_pkg_t *, abstract_pkg_t *))
+void abstract_pkg_vec_sort(pkg_vec_t *vec, compare_fcn_t compar)
 {
-     qsort(vec->pkgs, vec->len, sizeof(pkg_t *), (compare_fcn_t)compar);
+     qsort(vec->pkgs, vec->len, sizeof(pkg_t *), compar);
 }