void git_object__free(git_object *object) { assert(object); git_object__source_close(object); switch (object->source.raw.type) { case GIT_OBJ_COMMIT: git_commit__free((git_commit *)object); break; case GIT_OBJ_TREE: git_tree__free((git_tree *)object); break; case GIT_OBJ_TAG: git_tag__free((git_tag *)object); break; case GIT_OBJ_BLOB: git_blob__free((git_blob *)object); break; default: free(object); break; } }
void git_object_free(git_object *object) { if (object == NULL) return; git_object__source_close(object); git_hashtable_remove(object->repo->objects, &object->id); switch (object->source.raw.type) { case GIT_OBJ_COMMIT: git_commit__free((git_commit *)object); break; case GIT_OBJ_TREE: git_tree__free((git_tree *)object); break; case GIT_OBJ_TAG: git_tag__free((git_tag *)object); break; case GIT_OBJ_BLOB: git_blob__free((git_blob *)object); break; default: free(object); break; } }
void git_object__free(void *_obj) { git_object *object = (git_object *)_obj; assert(object); switch (object->type) { case GIT_OBJ_COMMIT: git_commit__free((git_commit *)object); break; case GIT_OBJ_TREE: git_tree__free((git_tree *)object); break; case GIT_OBJ_TAG: git_tag__free((git_tag *)object); break; case GIT_OBJ_BLOB: git_blob__free((git_blob *)object); break; default: git__free(object); break; } }