MCPcopy Index your code
hub / github.com/git/git / parsed_object_pool_clear

Function parsed_object_pool_clear

object.c:583–622  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

581}
582
583void parsed_object_pool_clear(struct parsed_object_pool *o)
584{
585 /*
586 * As objects are allocated in slabs (see alloc.c), we do
587 * not need to free each object, but each slab instead.
588 *
589 * Before doing so, we need to free any additional memory
590 * the objects may hold.
591 */
592 unsigned i;
593
594 for (i = 0; i < o->obj_hash_size; i++) {
595 struct object *obj = o->obj_hash[i];
596
597 if (!obj)
598 continue;
599
600 if (obj->type == OBJ_TREE)
601 free_tree_buffer((struct tree*)obj);
602 else if (obj->type == OBJ_COMMIT)
603 release_commit_memory(o, (struct commit*)obj);
604 else if (obj->type == OBJ_TAG)
605 release_tag_memory((struct tag*)obj);
606 }
607
608 FREE_AND_NULL(o->obj_hash);
609 o->obj_hash_size = 0;
610
611 free_commit_buffer_slab(o->buffer_slab);
612 o->buffer_slab = NULL;
613
614 parsed_object_pool_reset_commit_grafts(o);
615 alloc_state_free_and_null(&o->blob_state);
616 alloc_state_free_and_null(&o->tree_state);
617 alloc_state_free_and_null(&o->commit_state);
618 alloc_state_free_and_null(&o->tag_state);
619 alloc_state_free_and_null(&o->object_state);
620 stat_validity_clear(o->shallow_stat);
621 FREE_AND_NULL(o->shallow_stat);
622}

Callers 1

repo_clearFunction · 0.85

Calls 7

free_tree_bufferFunction · 0.85
release_commit_memoryFunction · 0.85
release_tag_memoryFunction · 0.85
free_commit_buffer_slabFunction · 0.85
stat_validity_clearFunction · 0.85

Tested by

no test coverage detected