git/builtin
Jonathan Nieder 127f045222 revert: plug memory leak in "cherry-pick root commit" codepath
The empty tree passed as common ancestor to merge_trees() when
cherry-picking a parentless commit is allocated on the heap and never
freed.  Leaking such a small one-time allocation is not a very big
problem, but now that "git cherry-pick" can cherry-pick multiple
commits it can start to add up.

Avoid the leak by storing the fake tree exactly once in the BSS
section (i.e., use a static).  While at it, let's add a test to make
sure cherry-picking multiple parentless commits continues to work.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-08-16 10:51:34 -07:00
..
add.c Merge branch 'cp/add-u-pathspec' 2010-03-10 15:32:02 -08:00
annotate.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
apply.c Merge branch 'bg/apply-blank-trailing-context' 2010-05-08 22:37:41 -07:00
archive.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
bisect--helper.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
blame.c Merge branch 'maint' 2010-03-13 21:31:42 -08:00
branch.c Merge branch 'lt/deepen-builtin-source' 2010-03-10 15:25:18 -08:00
bundle.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
cat-file.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
check-attr.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
check-ref-format.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
checkout-index.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
checkout.c Merge branch 'em/checkout-orphan' 2010-05-21 04:02:14 -07:00
clean.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
clone.c Merge branch 'sr/remote-helper-export' 2010-05-21 04:02:15 -07:00
commit-tree.c make commit_tree a library function 2010-04-01 23:53:54 -07:00
commit.c Merge branch 'jc/status-show-ignored' 2010-05-21 04:02:16 -07:00
config.c Allow passing of configuration parameters in the command line 2010-03-28 09:48:25 -07:00
count-objects.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
describe.c Merge branch 'sp/maint-describe-tiebreak-with-tagger-date' 2010-05-21 04:02:17 -07:00
diff-files.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
diff-index.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
diff-tree.c Merge branch 'pb/log-first-parent-p-m' 2010-03-24 16:25:39 -07:00
diff.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
fast-export.c Merge branch 'maint' 2010-03-28 17:42:58 -07:00
fetch-pack.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
fetch.c Merge branch 'maint' 2010-04-09 22:43:18 -07:00
fmt-merge-msg.c fmt-merge-msg: hide summary option 2010-03-24 19:45:31 -07:00
for-each-ref.c for-each-ref: Field with abbreviated objectname 2010-05-18 21:49:04 -07:00
fsck.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
gc.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
grep.c Merge branch 'np/malloc-threading' 2010-05-21 04:02:16 -07:00
hash-object.c Merge branch 'lt/deepen-builtin-source' 2010-03-10 15:25:18 -08:00
help.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
index-pack.c Merge branch 'np/index-pack-memsave' 2010-05-21 04:02:19 -07:00
init-db.c handle "git --bare init <dir>" properly 2010-05-10 11:25:37 -07:00
log.c Merge branch 'sd/log-decorate' 2010-05-08 22:36:14 -07:00
ls-files.c ls: remove redundant logic 2010-03-21 16:23:44 -07:00
ls-remote.c ls-remote: fall-back to default remotes when no remote specified 2010-04-08 23:10:43 -07:00
ls-tree.c ls: remove redundant logic 2010-03-21 16:23:44 -07:00
mailinfo.c Teach mailinfo %< as an alternative scissors mark 2010-04-04 10:17:55 -07:00
mailsplit.c Merge branch 'sh/am-keep-cr' 2010-03-10 15:32:34 -08:00
merge-base.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
merge-file.c merge-file --diff3: add a label for ancestor 2010-03-20 20:36:11 -07:00
merge-index.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
merge-ours.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
merge-recursive.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
merge-tree.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
merge.c Merge branch 'cc/revert-strategy' 2010-05-08 22:34:47 -07:00
mktag.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
mktree.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
mv.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
name-rev.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
notes.c Merge branch 'sb/notes-parse-opt' 2010-03-28 21:52:28 -07:00
pack-objects.c Merge branch 'np/malloc-threading' 2010-05-21 04:02:16 -07:00
pack-redundant.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
pack-refs.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
patch-id.c patch-id: Add support for mbox format 2010-04-19 13:01:49 -07:00
prune-packed.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
prune.c Merge branch 'lt/deepen-builtin-source' 2010-03-10 15:25:18 -08:00
push.c Merge branch 'maint' 2010-04-09 22:43:18 -07:00
read-tree.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
receive-pack.c Merge branch 'js/maint-receive-pack-symref-alias' 2010-05-21 04:02:19 -07:00
reflog.c Merge branch 'jc/maint-no-reflog-expire-unreach-for-head' 2010-05-21 04:02:18 -07:00
remote.c remote add: add a --[no-]tags option 2010-04-19 16:39:24 -07:00
replace.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
rerere.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
reset.c Sync with 1.7.0.4 2010-03-31 15:14:27 -07:00
rev-list.c Merge branch 'ef/maint-empty-commit-log' 2010-04-06 14:50:46 -07:00
rev-parse.c Merge branch 'lt/deepen-builtin-source' 2010-03-10 15:25:18 -08:00
revert.c revert: plug memory leak in "cherry-pick root commit" codepath 2011-08-16 10:51:34 -07:00
rm.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
send-pack.c Merge branch 'ld/push-porcelain' 2010-03-15 00:58:24 -07:00
shortlog.c Merge branch 'jn/shortlog' 2010-05-21 04:02:20 -07:00
show-branch.c show-branch: use DEFAULT_ABBREV instead of 7 2010-05-25 09:48:49 -07:00
show-ref.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
stripspace.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
symbolic-ref.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
tag.c tag -v: use RUN_GIT_CMD to run verify-tag 2010-04-17 12:40:19 -07:00
tar-tree.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
unpack-file.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
unpack-objects.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
update-index.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
update-ref.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
update-server-info.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
upload-archive.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
var.c Merge branch 'lt/deepen-builtin-source' 2010-03-10 15:25:18 -08:00
verify-pack.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
verify-tag.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00
write-tree.c Move 'builtin-*' into a 'builtin/' subdirectory 2010-02-22 14:29:41 -08:00