X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=revision.c;h=8764dde381111cfc9c8ea7eb3856223de9786ec9;hb=a61ba26a4725d4a93297305315587b92324baf0b;hp=66a882029f194cf8c99704df2ca61597a2817eee;hpb=c13975e7fd19a6939de264233eed20f93c6d1f46;p=git.git diff --git a/revision.c b/revision.c index 66a882029..8764dde38 100644 --- a/revision.c +++ b/revision.c @@ -226,6 +226,13 @@ static struct object *get_reference(struct rev_info *revs, const char *name, con return object; } +void add_pending_sha1(struct rev_info *revs, const char *name, + const unsigned char *sha1, unsigned int flags) +{ + struct object *object = get_reference(revs, name, sha1, flags); + add_pending_object(revs, object, name); +} + static struct commit *handle_commit(struct rev_info *revs, struct object *object, const char *name) { unsigned long flags = object->flags; @@ -897,7 +904,7 @@ static int handle_one_ref(const char *path, const unsigned char *sha1, int flag, struct object *object = get_reference(cb->all_revs, path, sha1, cb->all_flags); add_rev_cmdline(cb->all_revs, object, path, REV_CMD_REF, cb->all_flags); - add_pending_object(cb->all_revs, object, path); + add_pending_sha1(cb->all_revs, path, sha1, cb->all_flags); return 0; } @@ -2050,7 +2057,8 @@ int prepare_revision_walk(struct rev_info *revs) } e++; } - free(list); + if (!revs->leak_pending) + free(list); if (revs->no_walk) return 0;