1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-10-30 22:07:53 +01:00
git/builtin
Jared Hance 6fe53908f9 apply: do not leak patches and fragments
In the while loop inside apply_patch, patch and fragments are
dynamically allocated with a calloc. However, only unused patches
are actually freed and the rest are left to leak. Since a list is
actively built up consisting of the used patches, they can simply be
iterated and freed at the end of the function.

In addition, the text in fragments were not freed, primarily because
they mostly point into a patch text that is freed as a whole. But
there are some cases where new piece of memory is allocated and
pointed by a fragment (namely, when handling a binary patch).

Introduce a free_patch bitfield to mark each fragment if its text
needs to be freed, and free patches, fragments and fragment text
that need to be freed when we are done with the input.

Signed-off-by: Jared Hance <jaredhance@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-03-07 14:56:08 -08:00
..
add.c
annotate.c
apply.c apply: do not leak patches and fragments 2012-03-07 14:56:08 -08:00
archive.c Revert "upload-archive: use start_command instead of fork" 2011-11-15 15:39:33 -08:00
bisect--helper.c
blame.c Merge branch 'maint-1.7.7' into maint 2011-12-13 21:58:51 -08:00
branch.c Merge branch 'jn/branch-move-to-self' into maint 2011-12-28 11:32:33 -08:00
bundle.c Teach progress eye-candy to fetch_refs_from_bundle() 2011-09-19 11:07:21 -07:00
cat-file.c
check-attr.c Merge branch 'bc/attr-ignore-case' 2011-10-17 21:37:14 -07:00
check-ref-format.c Change check_refname_format() to reject unnormalized refnames 2011-10-05 13:45:30 -07:00
checkout-index.c
checkout.c Merge branch 'jc/checkout-m-twoway' into maint 2011-12-28 11:44:54 -08:00
clean.c Documentation: clarify "git clean -e <pattern>" 2011-08-28 23:47:55 -07:00
clone.c clone: the -o option has nothing to do with <branch> 2011-12-21 11:26:30 -08:00
commit-tree.c
commit.c Merge branch 'jk/maint-strbuf-missing-init' into maint 2011-12-28 11:42:46 -08:00
config.c Merge branch 'jv/maint-config-set' into maint 2011-12-28 12:03:19 -08:00
count-objects.c
describe.c describe: Refresh the index when run with --dirty 2011-09-23 14:28:17 -07:00
diff-files.c
diff-index.c
diff-tree.c
diff.c cast variable in call to free() in builtin/diff.c and submodule.c 2011-11-06 10:43:18 -08:00
fast-export.c
fetch-pack.c fetch-pack: match refs exactly 2011-12-13 10:17:50 -08:00
fetch.c Merge branch 'maint-1.7.7' into maint 2011-12-13 21:58:51 -08:00
fmt-merge-msg.c Accept tags in HEAD or MERGE_HEAD 2011-09-18 14:11:40 -07:00
for-each-ref.c for-each-ref: add split message parts to %(contents:*). 2011-09-08 13:56:19 -07:00
fsck.c fsck: do not abort upon finding an empty blob 2011-09-11 18:03:38 -07:00
gc.c
grep.c Merge branch 'nd/misc-cleanups' into maint 2011-12-13 22:02:51 -08:00
hash-object.c
help.c
index-pack.c receive-pack, fetch-pack: reject bogus pack that records objects twice 2011-11-16 22:05:21 -08:00
init-db.c builtin/init-db.c: eliminate -Wformat warning on Solaris 2011-12-20 16:02:08 -08:00
log.c builtin/log: remove redundant initialization 2011-12-21 11:15:56 -08:00
ls-files.c Merge branch 'cb/common-prefix-unification' 2011-10-10 15:56:17 -07:00
ls-remote.c Merge branch 'jc/ls-remote-short-help' 2011-10-05 12:36:26 -07:00
ls-tree.c
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c
merge-index.c
merge-ours.c
merge-recursive.c
merge-tree.c
merge.c Merge branch 'jk/maint-strbuf-missing-init' into maint 2011-12-28 11:42:46 -08:00
mktag.c
mktree.c Merge "Move 'builtin-*' into a 'builtin/' subdirectory" 2011-11-10 09:10:51 -08:00
mv.c Merge branch 'jk/maint-mv' into maint 2011-12-28 11:32:36 -08:00
name-rev.c Merge branch 'jc/maint-name-rev-all' into maint-1.7.6 2011-12-13 21:12:34 -08:00
notes.c
pack-objects.c Merge branch 'maint-1.7.7' into maint 2012-01-12 23:31:46 -08:00
pack-redundant.c
pack-refs.c
patch-id.c patch-id.c: use strbuf instead of a fixed buffer 2011-09-22 09:35:07 -07:00
prune-packed.c
prune.c
push.c push: Don't push a repository with unpushed submodules 2011-08-20 23:03:52 -07:00
read-tree.c
receive-pack.c receive-pack: do not expect object 0{40} to exist 2011-11-03 14:27:04 -07:00
reflog.c
remote-ext.c
remote-fd.c
remote.c Merge branch 'jc/remote-setbranches-usage-fix' 2011-11-08 16:40:31 -08:00
replace.c Change check_ref_format() to take a flags argument 2011-10-05 13:45:29 -07:00
rerere.c
reset.c Merge branch 'jk/reset-reflog-message-fix' into maint 2011-09-11 22:33:20 -07:00
rev-list.c rev-list --verify-object 2011-09-01 15:46:13 -07:00
rev-parse.c
revert.c revert: stop creating and removing sequencer-old directory 2011-12-12 13:33:53 -08:00
rm.c
send-pack.c drop "match" parameter from get_remote_heads 2011-12-13 10:08:24 -08:00
shortlog.c
show-branch.c want_color: automatically fallback to color.ui 2011-08-19 15:51:38 -07:00
show-ref.c Change check_ref_format() to take a flags argument 2011-10-05 13:45:29 -07:00
stripspace.c Update documentation for stripspace 2011-12-12 16:48:54 -08:00
symbolic-ref.c
tag.c Merge branch 'mh/check-ref-format-3' 2011-10-10 15:56:18 -07:00
tar-tree.c
unpack-file.c
unpack-objects.c
update-index.c
update-ref.c update-ref: whitespace fix 2011-08-25 14:42:11 -07:00
update-server-info.c
upload-archive.c Revert "upload-archive: use start_command instead of fork" 2011-11-15 15:39:33 -08:00
var.c
verify-pack.c
verify-tag.c
write-tree.c