Merge branch 'bc/tree-walk-oid'

The code to walk tree objects has been taught that we may be
working with object names that are not computed with SHA-1.

* bc/tree-walk-oid:
  cache: make oidcpy always copy GIT_MAX_RAWSZ bytes
  tree-walk: store object_id in a separate member
  match-trees: use hashcpy to splice trees
  match-trees: compute buffer offset correctly when splicing
  tree-walk: copy object ID before use
This commit is contained in:
Junio C Hamano
2019-01-29 12:47:56 -08:00
21 changed files with 84 additions and 98 deletions

10
tree.c
View File

@@ -86,7 +86,7 @@ static int read_tree_1(struct repository *r,
continue;
}
switch (fn(entry.oid, base,
switch (fn(&entry.oid, base,
entry.path, entry.mode, stage, context)) {
case 0:
continue;
@@ -97,19 +97,19 @@ static int read_tree_1(struct repository *r,
}
if (S_ISDIR(entry.mode))
oidcpy(&oid, entry.oid);
oidcpy(&oid, &entry.oid);
else if (S_ISGITLINK(entry.mode)) {
struct commit *commit;
commit = lookup_commit(r, entry.oid);
commit = lookup_commit(r, &entry.oid);
if (!commit)
die("Commit %s in submodule path %s%s not found",
oid_to_hex(entry.oid),
oid_to_hex(&entry.oid),
base->buf, entry.path);
if (parse_commit(commit))
die("Invalid commit %s in submodule path %s%s",
oid_to_hex(entry.oid),
oid_to_hex(&entry.oid),
base->buf, entry.path);
oidcpy(&oid, get_commit_tree_oid(commit));