projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Make "tree_entry" have a SHA1 instead of a union of object pointers
[git.git]
/
builtin-rev-list.c
diff --git
a/builtin-rev-list.c
b/builtin-rev-list.c
index
f11dbd6
..
94f520b
100644
(file)
--- a/
builtin-rev-list.c
+++ b/
builtin-rev-list.c
@@
-103,6
+103,7
@@
static struct object_list **process_blob(struct blob *blob,
if (obj->flags & (UNINTERESTING | SEEN))
return p;
obj->flags |= SEEN;
if (obj->flags & (UNINTERESTING | SEEN))
return p;
obj->flags |= SEEN;
+ name = strdup(name);
return add_object(obj, p, path, name);
}
return add_object(obj, p, path, name);
}
@@
-122,6
+123,7
@@
static struct object_list **process_tree(struct tree *tree,
if (parse_tree(tree) < 0)
die("bad tree object %s", sha1_to_hex(obj->sha1));
obj->flags |= SEEN;
if (parse_tree(tree) < 0)
die("bad tree object %s", sha1_to_hex(obj->sha1));
obj->flags |= SEEN;
+ name = strdup(name);
p = add_object(obj, p, path, name);
me.up = path;
me.elem = name;
p = add_object(obj, p, path, name);
me.up = path;
me.elem = name;
@@
-131,12
+133,14
@@
static struct object_list **process_tree(struct tree *tree,
while (entry) {
struct tree_entry_list *next = entry->next;
if (entry->directory)
while (entry) {
struct tree_entry_list *next = entry->next;
if (entry->directory)
- p = process_tree(
entry->item.tree
, p, &me, entry->name);
+ p = process_tree(
lookup_tree(entry->sha1)
, p, &me, entry->name);
else
else
- p = process_blob(
entry->item.blob
, p, &me, entry->name);
+ p = process_blob(
lookup_blob(entry->sha1)
, p, &me, entry->name);
free(entry);
entry = next;
}
free(entry);
entry = next;
}
+ free(tree->buffer);
+ tree->buffer = NULL;
return p;
}
return p;
}