commit - 21de8138fee88f812099d8b0b71d8280f4f6ba4e
commit + 41861f2b47879010d252aa5a6d8a7f8f734041f0
blob - 3a699c9c2d5c9bc7d891ae0c0e65af894a4e653e
blob + ceacd908686d8842b986df5c5ab20fbcf3acc81a
--- lib/reference.c
+++ lib/reference.c
int cmp;
*newp = NULL;
-
- new = malloc(sizeof(*new));
- if (new == NULL)
- return got_error_from_errno("malloc");
- new->ref = ref;
- *newp = new;
- if (cmp_cb != got_ref_cmp_by_name &&
- (new->ref->flags & GOT_REF_IS_PACKED)) {
+ if (cmp_cb != got_ref_cmp_by_name && (ref->flags & GOT_REF_IS_PACKED)) {
/*
* If we are not sorting elements by name then we must still
* detect collisions between a packed ref and an on-disk ref
* already present on the list before packed refs get added.
*/
TAILQ_FOREACH(re, refs, entry) {
- err = got_ref_cmp_by_name(NULL, &cmp,
- re->ref, new->ref);
+ err = got_ref_cmp_by_name(NULL, &cmp, re->ref, ref);
if (err)
return err;
- if (cmp == 0) {
- free(new);
- *newp = NULL;
+ if (cmp == 0)
return NULL;
- }
}
}
+ new = malloc(sizeof(*new));
+ if (new == NULL)
+ return got_error_from_errno("malloc");
+ new->ref = ref;
+ *newp = new;
+
/*
* We must de-duplicate entries on insert because packed-refs may
* contain redundant entries. On-disk refs take precedence.