summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjörn Steinbrink <B.Steinbrink@gmx.de>2009-04-08 11:28:54 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-04-09 05:58:43 (GMT)
commitde551d472ed65fa570d9456e8498348fe4c8e7d8 (patch)
tree6f5cbc2f918d0de0220cd2d1b58af9815c4e4696
parent20ff3ec28e1dc7b653bfdc7643cb55045d7913fc (diff)
downloadgit-de551d472ed65fa570d9456e8498348fe4c8e7d8.zip
git-de551d472ed65fa570d9456e8498348fe4c8e7d8.tar.gz
git-de551d472ed65fa570d9456e8498348fe4c8e7d8.tar.bz2
process_{tree,blob}: Remove useless xstrdup calls
The name of the processed object was duplicated for passing it to add_object(), but that already calls path_name, which allocates a new string anyway. So the memory allocated by the xstrdup calls just went nowhere, leaking memory. This reduces the RSS usage for a "rev-list --all --objects" by about 10% on the gentoo repo (fully packed) as well as linux-2.6.git: gentoo: | old | new ----------------|------------------------------- RSS | 1537284 | 1388408 VSZ | 1816852 | 1667952 time elapsed | 1:49.62 | 1:48.99 min. page faults| 417178 | 379919 linux-2.6.git: | old | new ----------------|------------------------------- RSS | 324452 | 292996 VSZ | 491792 | 460376 time elapsed | 0:14.53 | 0:14.28 min. page faults| 89360 | 81613 Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--list-objects.c2
-rw-r--r--reachable.c1
2 files changed, 0 insertions, 3 deletions
diff --git a/list-objects.c b/list-objects.c
index c8b8375..dd243c7 100644
--- a/list-objects.c
+++ b/list-objects.c
@@ -23,7 +23,6 @@ static void process_blob(struct rev_info *revs,
if (obj->flags & (UNINTERESTING | SEEN))
return;
obj->flags |= SEEN;
- name = xstrdup(name);
add_object(obj, p, path, name);
}
@@ -78,7 +77,6 @@ static void process_tree(struct rev_info *revs,
if (parse_tree(tree) < 0)
die("bad tree object %s", sha1_to_hex(obj->sha1));
obj->flags |= SEEN;
- name = xstrdup(name);
add_object(obj, p, path, name);
me.up = path;
me.elem = name;
diff --git a/reachable.c b/reachable.c
index 3b1c18f..b515fa2 100644
--- a/reachable.c
+++ b/reachable.c
@@ -48,7 +48,6 @@ static void process_tree(struct tree *tree,
obj->flags |= SEEN;
if (parse_tree(tree) < 0)
die("bad tree object %s", sha1_to_hex(obj->sha1));
- name = xstrdup(name);
add_object(obj, p, path, name);
me.up = path;
me.elem = name;