return pakfire_repo_read_metadata(repo, path);
}
-static void free_repo_appdata(struct pakfire_repo_appdata* appdata) {
+static void pakfire_repo_free_appdata(struct pakfire_repo_appdata* appdata) {
if (appdata)
free(appdata);
}
-static void pakfire_repo_free(struct pakfire_repo* repo, const int free_repo) {
+static void pakfire_repo_free(struct pakfire_repo* self, const int free_repo) {
+ // Optionally free appdata
if (free_repo) {
- free_repo_appdata(repo->repo->appdata);
- repo_free(repo->repo, 0);
- }
+ if (self->repo) {
+ if (self->repo->appdata)
+ pakfire_repo_free_appdata(self->repo->appdata);
- // Free the key
- if (repo->key)
- pakfire_key_unref(repo->key);
+ repo_free(self->repo, 0);
+ }
+ }
- if (repo->mirrorlist)
- pakfire_mirrorlist_unref(repo->mirrorlist);
- if (repo->pakfire)
- pakfire_unref(repo->pakfire);
- if (repo->ctx)
- pakfire_ctx_unref(repo->ctx);
- free(repo);
+ if (self->mirrorlist)
+ pakfire_mirrorlist_unref(self->mirrorlist);
+ if (self->pakfire)
+ pakfire_unref(self->pakfire);
+ if (self->key)
+ pakfire_key_unref(self->key);
+ if (self->ctx)
+ pakfire_ctx_unref(self->ctx);
+ free(self);
}
void pakfire_repo_free_all(struct pakfire* pakfire) {
int i;
FOR_REPOS(i, repo) {
- free_repo_appdata(repo->appdata);
+ if (repo->appdata)
+ pakfire_repo_free_appdata(repo->appdata);
+
repo_free(repo, 0);
}
}