pkg: use a blob buffer in pkg_t to store variable fields
[oweals/opkg-lede.git] / libopkg / pkg_depends.c
index 70c292291855e2707cc4d31e756bb1fcd0e08d7c..d741c4ae3f645ede3d42ca51054105e0a347bee7 100644 (file)
@@ -441,7 +441,7 @@ int version_constraints_satisfied(depend_t * depends, pkg_t * pkg)
 
        comparison = pkg_compare_versions(pkg, temp);
 
-       free(temp->version);
+       pkg_deinit(temp);
        free(temp);
 
        if ((depends->constraint == EARLIER) && (comparison < 0))
@@ -516,14 +516,18 @@ int pkg_dependence_satisfied(depend_t * depend)
 static int is_pkg_in_pkg_vec(pkg_vec_t * vec, pkg_t * pkg)
 {
        int i;
+       char *arch1, *arch2;
        pkg_t **pkgs = vec->pkgs;
+       arch1 = pkg_get_string(pkg, PKG_ARCHITECTURE);
+
+       for (i = 0; i < vec->len; i++) {
+               arch2 = pkg_get_string(*(pkgs + i), PKG_ARCHITECTURE);
 
-       for (i = 0; i < vec->len; i++)
                if ((strcmp(pkg->name, (*(pkgs + i))->name) == 0)
                    && (pkg_compare_versions(pkg, *(pkgs + i)) == 0)
-                   && (strcmp(pkg->architecture, (*(pkgs + i))->architecture)
-                       == 0))
+                   && (strcmp(arch1, arch2) == 0))
                        return 1;
+       }
        return 0;
 }