Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Ignore shlib duplicates.
Vsevolod Stakhov committed 11 years ago
commit b5789f6e5ba7162c4c62fba89703677946c52531
parent 9eabff9
1 file changed +15 -12
modified libpkg/pkg.c
@@ -1133,21 +1133,23 @@ pkg_handle_sostr(const char *name, struct sbuf **sb)
int
pkg_addshlib_required(struct pkg *pkg, const char *name)
{
-
	struct pkg_shlib *s = NULL;
+
	struct pkg_shlib *s = NULL, *f;
	const char *origin;


	assert(pkg != NULL);
	assert(name != NULL && name[0] != '\0');

-
	HASH_FIND_STR(pkg->shlibs_required, name, s);
-
	/* silently ignore duplicates in case of shlibs */
-
	if (s != NULL)
-
		return (EPKG_OK);
-

	pkg_shlib_new(&s);
	pkg_handle_sostr(name, &s->name);

+
	HASH_FIND_STR(pkg->shlibs_required, pkg_shlib_name(s), f);
+
	/* silently ignore duplicates in case of shlibs */
+
	if (f != NULL) {
+
		pkg_shlib_free(s);
+
		return (EPKG_OK);
+
	}
+

	HASH_ADD_KEYPTR(hh, pkg->shlibs_required,
	    pkg_shlib_name(s),
	    strlen(pkg_shlib_name(s)), s);
@@ -1162,19 +1164,20 @@ pkg_addshlib_required(struct pkg *pkg, const char *name)
int
pkg_addshlib_provided(struct pkg *pkg, const char *name)
{
-
	struct pkg_shlib *s = NULL;
+
	struct pkg_shlib *s = NULL, *f;
	const char *origin;

	assert(pkg != NULL);
	assert(name != NULL && name[0] != '\0');

-
	HASH_FIND_STR(pkg->shlibs_provided, name, s);
-
	/* silently ignore duplicates in case of shlibs */
-
	if (s != NULL)
-
		return (EPKG_OK);
-

	pkg_shlib_new(&s);
	pkg_handle_sostr(name, &s->name);
+
	HASH_FIND_STR(pkg->shlibs_provided, pkg_shlib_name(s), f);
+
	/* silently ignore duplicates in case of shlibs */
+
	if (f != NULL) {
+
		pkg_shlib_free(s);
+
		return (EPKG_OK);
+
	}

	HASH_ADD_KEYPTR(hh, pkg->shlibs_provided,
	    pkg_shlib_name(s),