void git_repository_free(git_repository *repo) { if (repo == NULL) return; git_cache_free(&repo->objects); git_repository__refcache_free(&repo->references); git_attr_cache_flush(repo); git_submodule_config_free(repo); git__free(repo->path_repository); git__free(repo->workdir); drop_config(repo); drop_index(repo); drop_odb(repo); git__free(repo); }
void git_repository_free(git_repository *repo) { if (repo == NULL) return; git_repository__cleanup(repo); git_cache_free(&repo->objects); git_diff_driver_registry_free(repo->diff_drivers); repo->diff_drivers = NULL; git__free(repo->path_repository); git__free(repo->workdir); git__free(repo->nnamespace); git__free(repo->name_8dot3); git__memzero(repo, sizeof(*repo)); git__free(repo); }
static void odb_free(git_odb *db) { size_t i; for (i = 0; i < db->backends.length; ++i) { backend_internal *internal = (backend_internal *) git_vector_get(&db->backends, i); git_odb_backend *backend = internal->backend; if (backend->free) backend->free(backend); else git__free(backend); git__free(internal); } git_vector_free(&db->backends); git_cache_free(&db->own_cache); git__memzero(db, sizeof(*db)); git__free(db); }
void git_repository_free(git_repository *repo) { if (repo == NULL) return; git_cache_free(&repo->objects); git_repository__refcache_free(&repo->references); free(repo->path_workdir); free(repo->path_index); free(repo->path_repository); free(repo->path_odb); if (repo->db != NULL) git_odb_close(repo->db); if (repo->index != NULL) git_index_free(repo->index); free(repo); }