[PATCH 06/10] reflog-walk.c: request allocated buffer from resolve_ref()
- From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
- Date
- Nov 15, 2011, 06:07 UTC
- Message-ID
- <1321337276-17803-6-git-send-email-pclouds@gmail.com>
- In-Reply-To
- <1321337276-17803-1-git-send-email-pclouds@gmail.com>
for_each_reflog_ent() can do anything, including calling resolve_ref() again. Therefore it's not safe to use the static buffer returned by resolve_ref(). Request it to allocate new buffer instead.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> --- reflog-walk.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/reflog-walk.c b/reflog-walk.c index f71cca6..00bdff8 100644 --- a/reflog-walk.c +++ b/reflog-walk.c @@ -50,9 +50,11 @@ static struct complete_reflogs *read_complete_reflog(const char *ref) for_each_reflog_ent(ref, read_one_reflog, reflogs); if (reflogs->nr == 0) { unsigned char sha1[20]; - const char *name = resolve_ref(ref, sha1, 1, NULL, 0); - if (name) + char *name = resolve_ref(ref, sha1, 1, NULL, 1); + if (name) { for_each_reflog_ent(name, read_one_reflog, reflogs); + free(name); + } } if (reflogs->nr == 0) { int len = strlen(ref);
-- 1.7.4.74.g639db