{
struct object *obj = lookup_object(sha1);
if (!obj) {
- struct commit *ret = malloc(sizeof(struct commit));
+ struct commit *ret = xmalloc(sizeof(struct commit));
memset(ret, 0, sizeof(struct commit));
created_object(sha1, &ret->object);
ret->object.type = commit_type;
if (!buffer)
return error("Could not read %s",
sha1_to_hex(item->object.sha1));
- if (strcmp(type, commit_type))
+ if (strcmp(type, commit_type)) {
+ free(buffer);
return error("Object %s not a commit",
sha1_to_hex(item->object.sha1));
+ }
get_sha1_hex(bufptr + 5, parent);
item->tree = lookup_tree(parent);
if (item->tree)
void commit_list_insert(struct commit *item, struct commit_list **list_p)
{
- struct commit_list *new_list = malloc(sizeof(struct commit_list));
+ struct commit_list *new_list = xmalloc(sizeof(struct commit_list));
new_list->item = item;
new_list->next = *list_p;
*list_p = new_list;