builtin-merge.c: allocate correct amount of memory

Fix two memory allocation errors which allocate space for a pointer
rather than enough space for the structure itself.

This:

    struct commit_list *parent = xmalloc(sizeof(struct commit_list *));

should have been this:

    struct commit_list *parent = xmalloc(sizeof(struct commit_list));

But while we're at it, change the allocation to reference the
variable it is allocating memory for to try to prevent a similar
mistake, for example if the type is changed, in the future.

Signed-off-by: Brandon Casey <casey@nrlssc.navy.mil>
Acked-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Brandon Casey 2008-10-08 19:07:54 -05:00 коммит произвёл Shawn O. Pearce
Родитель fb74243636
Коммит 36e40535dc
1 изменённых файлов: 2 добавлений и 2 удалений

Просмотреть файл

@ -651,12 +651,12 @@ static void add_strategies(const char *string, unsigned attr)
static int merge_trivial(void) static int merge_trivial(void)
{ {
unsigned char result_tree[20], result_commit[20]; unsigned char result_tree[20], result_commit[20];
struct commit_list *parent = xmalloc(sizeof(struct commit_list *)); struct commit_list *parent = xmalloc(sizeof(*parent));
write_tree_trivial(result_tree); write_tree_trivial(result_tree);
printf("Wonderful.\n"); printf("Wonderful.\n");
parent->item = lookup_commit(head); parent->item = lookup_commit(head);
parent->next = xmalloc(sizeof(struct commit_list *)); parent->next = xmalloc(sizeof(*parent->next));
parent->next->item = remoteheads->item; parent->next->item = remoteheads->item;
parent->next->next = NULL; parent->next->next = NULL;
commit_tree(merge_msg.buf, result_tree, parent, result_commit); commit_tree(merge_msg.buf, result_tree, parent, result_commit);