Always release the object dictionary returned by xbps_find_pkg_dict_installed().

Document this in the public API header and update all code accordingly.
This commit is contained in:
Juan RP 2010-11-08 02:02:35 +01:00
parent ab10cc3b15
commit 679833156a
4 changed files with 9 additions and 3 deletions

View File

@ -105,6 +105,7 @@ xbps_check_pkg_integrity(const char *pkgname)
printf("Package %s is not installed.\n", pkgname);
return 0;
}
prop_object_release(pkgd);
/*
* Check for props.plist metadata file.
@ -296,8 +297,6 @@ out:
prop_object_release(filesd);
if (propsd)
prop_object_release(propsd);
if (pkgd)
prop_object_release(pkgd);
if (broken)
rv = EINVAL;

View File

@ -161,6 +161,7 @@ xbps_remove_installed_pkgs(int argc, char **argv, bool force, bool purge)
"PACKAGES!\n", argv[i], version);
reqby_force = true;
}
prop_object_release(dict);
}
if (!found)
return 0;
@ -185,6 +186,7 @@ xbps_remove_installed_pkgs(int argc, char **argv, bool force, bool purge)
cols = strlen(argv[i]) + strlen(version) + 4;
}
printf("%s-%s ", argv[i], version);
prop_object_release(dict);
}
printf("\n\n");
if (!force && !xbps_noyes("Do you want to continue?")) {
@ -199,6 +201,7 @@ xbps_remove_installed_pkgs(int argc, char **argv, bool force, bool purge)
if (dict == NULL)
continue;
prop_dictionary_get_cstring_nocopy(dict, "version", &version);
prop_object_release(dict);
if ((rv = pkg_remove_and_purge(argv[i], version, purge)) != 0)
return rv;
}

View File

@ -125,6 +125,7 @@ extern "C" {
*/
#define XBPS_FLAG_FORCE 0x00000002
/**
* @cond
*/
@ -478,7 +479,9 @@ prop_dictionary_t xbps_find_pkg_from_plist(const char *plist,
* by using a package pattern. If false, \a str is assumed to be a package name.
*
* @return The package's dictionary on success, NULL otherwise and
* errno is set appropiately.
* errno is set appropiately. Returned dictionary is copied via
* prop_dictionary_copy(), which means that caller is responsible to
* release the object with prop_object_release() when done.
*/
prop_dictionary_t xbps_find_pkg_dict_installed(const char *str,
bool bypattern);

View File

@ -114,6 +114,7 @@ xbps_get_pkg_state_installed(const char *pkgname, pkg_state_t *state)
return errno;
*state = get_state(pkgd);
prop_object_release(pkgd);
if (*state == 0)
return EINVAL;