1
0
mirror of https://github.com/git/git.git synced 2024-10-20 07:38:51 +02:00
Git Source Code Mirror. Please follow Documentation/SubmittingPatches procedure for any of your improvements.
Go to file
René Scharfe 6ff264ee05 unpack-trees: plug minor memory leak
The allocations made by unpack_nondirectories() using create_ce_entry()
are never freed.

In the non-merge case, we duplicate them using add_entry() and later
only look at the first allocated element (src[0]), perhaps even only
by mistake.  Split out the actual addition from add_entry() into the
new helper do_add_entry() and call this non-duplicating function
instead of add_entry() to avoid the leak.

Valgrind reports this for the command "git archive v1.7.9" without
the patch:

  ==13372== LEAK SUMMARY:
  ==13372==    definitely lost: 230,986 bytes in 2,325 blocks
  ==13372==    indirectly lost: 0 bytes in 0 blocks
  ==13372==      possibly lost: 98 bytes in 1 blocks
  ==13372==    still reachable: 2,259,198 bytes in 3,243 blocks
  ==13372==         suppressed: 0 bytes in 0 blocks

And with the patch applied:

  ==13375== LEAK SUMMARY:
  ==13375==    definitely lost: 65 bytes in 1 blocks
  ==13375==    indirectly lost: 0 bytes in 0 blocks
  ==13375==      possibly lost: 0 bytes in 0 blocks
  ==13375==    still reachable: 2,364,417 bytes in 3,245 blocks
  ==13375==         suppressed: 0 bytes in 0 blocks

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-04-10 16:36:23 -07:00
block-sha1
builtin Merge branch 'cn/maint-branch-with-bad' into maint 2012-03-04 22:17:52 -08:00
compat Merge branch 'bw/inet-pton-ntop-compat' into maint 2012-02-13 23:26:31 -08:00
contrib post-receive-email: match up $LOGBEGIN..$LOGEND pairs correctly 2012-02-27 11:01:16 -08:00
Documentation Git 1.7.9.3 2012-03-05 14:29:07 -08:00
git_remote_helpers
git-gui
gitk-git
gitweb Merge branch 'jn/maint-gitweb-invalid-regexp' into maint 2012-03-04 22:17:47 -08:00
mergetools Merge branch 'jn/ancient-meld-support' into maint 2012-02-27 15:33:07 -08:00
perl Merge branch 'maint' 2012-01-03 13:48:00 -08:00
po
ppc
t Merge branch 'cn/maint-branch-with-bad' into maint 2012-03-04 22:17:52 -08:00
templates
vcs-svn Fix a bitwise negation assignment issue spotted by Sun Studio 2011-12-21 10:19:40 -08:00
xdiff
.gitattributes
.gitignore
.mailmap
abspath.c
aclocal.m4
advice.c
advice.h
alias.c
alloc.c
archive-tar.c
archive-zip.c
archive.c Merge branch 'jk/maint-upload-archive' 2012-01-12 23:34:17 -08:00
archive.h
argv-array.c
argv-array.h
attr.c Merge branch 'maint-1.7.6' into maint-1.7.7 2012-01-11 19:11:00 -08:00
attr.h
base85.c
bisect.c
bisect.h rev-list: fix --verify-objects --quiet becoming --objects 2012-02-28 10:47:30 -08:00
blob.c
blob.h
branch.c Merge branch 'jn/maint-sequencer-fixes' into maint 2011-12-28 11:32:39 -08:00
branch.h
builtin.h
bulk-checkin.c
bulk-checkin.h
bundle.c Merge branch 'tr/maint-bundle-long-subject' into maint 2012-03-04 22:16:30 -08:00
bundle.h
cache-tree.c Merge branch 'jc/maint-commit-ignore-i-t-a' into maint 2012-02-16 14:08:00 -08:00
cache-tree.h
cache.h Merge branch 'jk/git-dir-lookup' into maint 2012-02-21 15:13:16 -08:00
check_bindir
check-builtins.sh
check-racy.c
color.c
color.h
combine-diff.c
command-list.txt
commit.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
commit.h Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
config.c Merge branch 'na/strtoimax' into maint 2011-12-28 11:32:33 -08:00
config.mak.in Makefile: introduce CHARSET_LIB to link with -lcharset 2012-02-13 00:11:01 -08:00
configure.ac Merge branch 'js/configure-libintl' into maint 2012-02-26 17:04:53 -08:00
connect.c server_supports(): parse feature list more carefully 2012-01-08 14:26:28 -08:00
connected.c
connected.h
convert.c Merge branch 'jk/maint-avoid-streaming-filtered-contents' into maint 2012-03-04 22:16:40 -08:00
convert.h teach convert_to_git a "dry run" mode 2012-02-24 14:11:27 -08:00
copy.c
COPYING
credential-cache--daemon.c
credential-cache.c credential-cache: ignore "connection refused" errors 2012-01-16 22:15:19 -08:00
credential-store.c
credential.c
credential.h
csum-file.c
csum-file.h
ctype.c ctype.c only wants git-compat-util.h 2012-02-10 12:53:55 -08:00
daemon.c
date.c Merge branch 'jc/parse-date-raw' into maint 2012-02-13 11:42:15 -08:00
decorate.c
decorate.h
delta.h
diff-delta.c
diff-lib.c diff-index: enable recursive pathspec matching in unpack_trees 2012-01-18 15:44:02 -08:00
diff-no-index.c
diff.c Merge branch 'jc/diff-stat-scaler' into maint 2012-02-21 15:00:33 -08:00
diff.h Use correct grammar in diffstat summary line 2012-02-03 23:19:42 -08:00
diffcore-break.c
diffcore-delta.c
diffcore-order.c
diffcore-pickaxe.c
diffcore-rename.c
diffcore.h
dir.c
dir.h
editor.c
entry.c
environment.c
exec_cmd.c
exec_cmd.h
fast-import.c fast-import: zero all of 'struct tag' to silence valgrind 2012-03-05 09:36:09 -08:00
fetch-pack.h
fixup-builtins
fmt-merge-msg.h
fsck.c
fsck.h
generate-cmdlist.sh
gettext.c
gettext.h
git-add--interactive.perl
git-am.sh am: don't infloop for an empty input file 2012-02-26 16:32:54 -08:00
git-archimport.perl
git-bisect.sh
git-compat-util.h ctype: implement islower/isupper macro 2012-02-10 12:56:29 -08:00
git-cvsexportcommit.perl git-cvsexportcommit: Fix calling Perl's rel2abs() on MSYS 2012-01-11 18:04:08 -08:00
git-cvsimport.perl
git-cvsserver.perl
git-difftool--helper.sh
git-difftool.perl
git-filter-branch.sh
git-instaweb.sh
git-lost-found.sh
git-merge-octopus.sh
git-merge-one-file.sh
git-merge-resolve.sh
git-mergetool--lib.sh
git-mergetool.sh mergetool: Provide an empty file when needed 2012-01-23 11:50:22 -08:00
git-parse-remote.sh
git-pull.sh
git-quiltimport.sh
git-rebase--am.sh
git-rebase--interactive.sh Merge branch 'aw/rebase-i-stop-on-failure-to-amend' into maint 2011-12-28 11:32:34 -08:00
git-rebase--merge.sh rebase -m: only call "notes copy" when rewritten exists and is non-empty 2012-02-26 16:32:37 -08:00
git-rebase.sh
git-relink.perl
git-remote-testgit.py
git-repack.sh
git-request-pull.sh request-pull: explicitly ask tags/$name to be pulled 2012-01-31 21:27:58 -08:00
git-send-email.perl send-email: multiedit is a boolean config option 2012-01-09 15:15:28 -08:00
git-sh-i18n.sh
git-sh-setup.sh Merge branch 'jc/parse-date-raw' into maint 2012-02-13 11:42:15 -08:00
git-stash.sh stash: Don't fail if work dir contains file named 'HEAD' 2012-01-01 01:11:56 -08:00
git-submodule.sh submodule add: fix breakage when re-adding a deep submodule 2012-01-24 14:18:18 -08:00
git-svn.perl
GIT-VERSION-GEN Git 1.7.9.3 2012-03-05 14:29:07 -08:00
git-web--browse.sh
git.c dashed externals: kill children on exit 2012-01-08 15:07:20 -08:00
git.spec.in git.spec: Workaround localized messages not put in any RPM 2012-02-03 23:06:30 -08:00
gpg-interface.c verify_signed_buffer: fix stale comment 2012-01-05 13:02:26 -08:00
gpg-interface.h
graph.c
graph.h
grep.c Sync with 1.7.8.5 2012-02-26 16:42:35 -08:00
grep.h grep: respect diff attributes for binary-ness 2012-02-02 10:36:08 -08:00
hash.c
hash.h
help.c pager: find out the terminal width before spawning the pager 2012-02-13 15:08:47 -08:00
help.h
hex.c
http-backend.c
http-fetch.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
http-push.c Merge branch 'ab/enable-i18n' 2011-12-19 16:06:41 -08:00
http-walker.c
http.c Merge branch 'jk/maint-push-over-dav' into maint 2011-12-28 11:32:37 -08:00
http.h Merge branch 'jk/maint-push-over-dav' into maint 2011-12-28 11:32:37 -08:00
ident.c
imap-send.c Sync with 1.7.6.6 2012-02-05 23:53:21 -08:00
INSTALL Fix build problems related to profile-directed optimization 2012-02-06 00:15:12 -08:00
kwset.c
kwset.h
levenshtein.c
levenshtein.h
LGPL-2.1
list-objects.c
list-objects.h
ll-merge.c
ll-merge.h
lockfile.c
log-tree.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
log-tree.h
mailmap.c mailmap: always return a plain mail address from map_user() 2012-02-06 14:00:06 -08:00
mailmap.h
Makefile Sync with 1.7.8.5 2012-02-26 16:42:35 -08:00
match-trees.c
merge-file.c
merge-file.h
merge-recursive.c
merge-recursive.h
name-hash.c
notes-cache.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
notes-cache.h
notes-merge.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
notes-merge.h
notes.c
notes.h
object.c
object.h
pack-check.c
pack-refs.c
pack-refs.h
pack-revindex.c
pack-revindex.h
pack-write.c Appease Sun Studio by renaming "tmpfile" 2011-12-21 10:21:04 -08:00
pack.h
pager.c pager: find out the terminal width before spawning the pager 2012-02-13 15:08:47 -08:00
parse-options-cb.c
parse-options.c
parse-options.h
patch-delta.c
patch-ids.c
patch-ids.h
path.c standardize and improve lookup rules for external local repos 2012-02-02 16:41:55 -08:00
pkt-line.c
pkt-line.h
preload-index.c
pretty.c Merge branch 'jc/show-sig' 2012-01-06 12:44:07 -08:00
progress.c
progress.h
prompt.c prompt: fall back to terminal if askpass fails 2012-02-03 14:37:04 -08:00
prompt.h
quote.c
quote.h
reachable.c
reachable.h
read-cache.c refresh_index: do not show unmerged path that is outside pathspec 2012-02-17 10:11:05 -08:00
README README: point to Documentation/SubmittingPatches 2012-02-23 11:35:59 -08:00
reflog-walk.c Merge branch 'jk/pretty-reglog-ent' 2011-12-22 11:27:28 -08:00
reflog-walk.h
refs.c Merge branch 'mh/ref-api' 2011-12-20 13:25:53 -08:00
refs.h
RelNotes Document accumulated fixes since 1.7.9.2 2012-02-26 17:08:59 -08:00
remote-curl.c Merge branch 'sp/smart-http-failure-to-push' into maint 2012-02-05 23:58:43 -08:00
remote.c i18n: format_tracking_info "Your branch is behind" message 2012-02-01 18:09:17 -08:00
remote.h
replace_object.c
rerere.c
rerere.h
resolve-undo.c
resolve-undo.h
revision.c Merge branch 'jk/grep-binary-attribute' into maint 2012-02-21 14:57:05 -08:00
revision.h
run-command.c dashed externals: kill children on exit 2012-01-08 15:07:20 -08:00
run-command.h dashed externals: kill children on exit 2012-01-08 15:07:20 -08:00
send-pack.h
sequencer.c
sequencer.h
server-info.c
setup.c standardize and improve lookup rules for external local repos 2012-02-02 16:41:55 -08:00
sh-i18n--envsubst.c
sha1_file.c Merge branch 'jk/maint-avoid-streaming-filtered-contents' into maint 2012-03-04 22:16:40 -08:00
sha1_name.c
sha1-array.c
sha1-array.h
sha1-lookup.c
sha1-lookup.h
shallow.c
shell.c
shortlog.h
show-index.c
sideband.c
sideband.h
sigchain.c
sigchain.h
strbuf.c Merge branch 'tr/maint-bundle-long-subject' into maint 2012-03-04 22:16:30 -08:00
strbuf.h Merge branch 'tr/maint-bundle-long-subject' into maint 2012-03-04 22:16:30 -08:00
streaming.c
streaming.h
string-list.c
string-list.h
submodule.c Merge branch 'jl/submodule-status-failure-report' into maint 2011-12-21 11:42:45 -08:00
submodule.h
symlinks.c
tag.c
tag.h
tar.h
test-chmtime.c
test-credential.c
test-ctype.c
test-date.c
test-delta.c
test-dump-cache-tree.c
test-genrandom.c
test-index-version.c
test-line-buffer.c
test-match-trees.c
test-mktemp.c
test-obj-pool.c
test-parse-options.c
test-path-utils.c
test-run-command.c
test-scrap-cache-tree.c
test-sha1.c
test-sha1.sh
test-sigchain.c
test-string-pool.c
test-subprocess.c
test-svn-fe.c
test-treap.c Fix a bitwise negation assignment issue spotted by Sun Studio 2011-12-21 10:19:40 -08:00
thread-utils.c
thread-utils.h
trace.c
transport-helper.c Merge branch 'sp/smart-http-failure-to-push' into maint 2012-03-04 22:16:33 -08:00
transport.c push/fetch/clone --no-progress suppresses progress output 2012-02-13 13:06:53 -08:00
transport.h
tree-diff.c
tree-walk.c Document limited recursion pathspec matching with wildcards 2012-01-14 18:39:04 -08:00
tree-walk.h
tree.c
tree.h
unimplemented.sh
unix-socket.c unix-socket: do not let close() or chdir() clobber errno during cleanup 2012-01-11 17:37:10 -08:00
unix-socket.h
unpack-trees.c unpack-trees: plug minor memory leak 2012-04-10 16:36:23 -07:00
unpack-trees.h
upload-pack.c server_supports(): parse feature list more carefully 2012-01-08 14:26:28 -08:00
url.c
url.h
usage.c
userdiff.c Merge branch 'tr/userdiff-c-returns-pointer' into maint 2011-12-21 11:42:45 -08:00
userdiff.h
utf8.c
utf8.h
walker.c
walker.h
wrap-for-bin.sh
wrapper.c
write_or_die.c
ws.c
wt-status.c
wt-status.h
xdiff-interface.c
xdiff-interface.h
zlib.c

////////////////////////////////////////////////////////////////

	GIT - the stupid content tracker

////////////////////////////////////////////////////////////////

"git" can mean anything, depending on your mood.

 - random three-letter combination that is pronounceable, and not
   actually used by any common UNIX command.  The fact that it is a
   mispronunciation of "get" may or may not be relevant.
 - stupid. contemptible and despicable. simple. Take your pick from the
   dictionary of slang.
 - "global information tracker": you're in a good mood, and it actually
   works for you. Angels sing, and a light suddenly fills the room.
 - "goddamn idiotic truckload of sh*t": when it breaks

Git is a fast, scalable, distributed revision control system with an
unusually rich command set that provides both high-level operations
and full access to internals.

Git is an Open Source project covered by the GNU General Public License.
It was originally written by Linus Torvalds with help of a group of
hackers around the net. It is currently maintained by Junio C Hamano.

Please read the file INSTALL for installation instructions.

See Documentation/gittutorial.txt to get started, then see
Documentation/everyday.txt for a useful minimum set of commands, and
Documentation/git-commandname.txt for documentation of each command.
If git has been correctly installed, then the tutorial can also be
read with "man gittutorial" or "git help tutorial", and the
documentation of each command with "man git-commandname" or "git help
commandname".

CVS users may also want to read Documentation/gitcvs-migration.txt
("man gitcvs-migration" or "git help cvs-migration" if git is
installed).

Many Git online resources are accessible from http://git-scm.com/
including full documentation and Git related tools.

The user discussion and development of Git take place on the Git
mailing list -- everyone is welcome to post bug reports, feature
requests, comments and patches to git@vger.kernel.org (read
Documentation/SubmittingPatches for instructions on patch submission).
To subscribe to the list, send an email with just "subscribe git" in
the body to majordomo@vger.kernel.org. The mailing list archives are
available at http://marc.theaimsgroup.com/?l=git and other archival
sites.

The messages titled "A note from the maintainer", "What's in
git.git (stable)" and "What's cooking in git.git (topics)" and
the discussion following them on the mailing list give a good
reference for project status, development direction and
remaining tasks.