}
PAKFIRE_EXPORT struct pakfire_filelist* pakfire_package_get_filelist(struct pakfire_package* pkg) {
- struct pakfire_filelist* filelist;
+ struct pakfire_filelist* filelist = NULL;
+ // Create a new filelist
int r = pakfire_filelist_create(&filelist, pkg->pakfire);
if (r)
- return NULL;
+ goto ERROR;
+ // Fetch all entries from the repository database
r = pakfire_package_fetch_filelist(pkg, filelist);
- if (r) {
- pakfire_filelist_unref(filelist);
- return NULL;
- }
+ if (r)
+ goto ERROR;
return filelist;
+
+ERROR:
+ if (filelist)
+ pakfire_filelist_unref(filelist);
+
+ return NULL;
}
static int pakfire_package_append_file(struct pakfire_package* pkg, const char* path) {