diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-09-19 11:38:34 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-09-19 11:38:34 -0700 |
commit | 73da5a1e85951ee967edde956021c55adeaa83ce (patch) | |
tree | debf3a3164c366440ea1c8905e71310ee45d0fe3 /fast-import.c | |
parent | 04631848c4bd66bf802983482b7b99021da85c9f (diff) | |
parent | 2668d692eb1af63097628447f2e0c783b1a45e2e (diff) | |
download | git-73da5a1e85951ee967edde956021c55adeaa83ce.tar.gz |
Merge branch 'mb/fast-import-delete-root'
An attempt to remove the entire tree in the "git fast-import" input
stream caused it to misbehave.
* mb/fast-import-delete-root:
fast-import: fix segfault in store_tree()
t9300: test filedelete command
Diffstat (limited to 'fast-import.c')
-rw-r--r-- | fast-import.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fast-import.c b/fast-import.c index 9e6134d034..487f1f81ac 100644 --- a/fast-import.c +++ b/fast-import.c @@ -1422,7 +1422,7 @@ static void mktree(struct tree_content *t, int v, struct strbuf *b) static void store_tree(struct tree_entry *root) { - struct tree_content *t = root->tree; + struct tree_content *t; unsigned int i, j, del; struct last_object lo = { STRBUF_INIT, 0, 0, /* no_swap */ 1 }; struct object_entry *le = NULL; @@ -1430,6 +1430,10 @@ static void store_tree(struct tree_entry *root) if (!is_null_sha1(root->versions[1].sha1)) return; + if (!root->tree) + load_tree(root); + t = root->tree; + for (i = 0; i < t->entry_count; i++) { if (t->entries[i]->tree) store_tree(t->entries[i]); |