summaryrefslogtreecommitdiff
path: root/cache-tree.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-08-20 12:53:09 -0700
committerJunio C Hamano <gitster@pobox.com>2010-08-20 12:53:09 -0700
commit16bfbe6352e90b87de26effe5ce120ab74ebafc7 (patch)
tree6525fdf55a6da9e426516546e7b652c1458b971f /cache-tree.c
parent316fa401e1c953ffc80533aaf6839817595cdd77 (diff)
parentb6b56aceb85fe05dc681ac7ee1249e6b6e26e957 (diff)
downloadgit-16bfbe6352e90b87de26effe5ce120ab74ebafc7.tar.gz
Merge branch 'jn/maint-plug-leak' into maint
* jn/maint-plug-leak: write-tree: Avoid leak when index refers to an invalid object read-tree: stop leaking tree objects core: Stop leaking ondisk_cache_entrys
Diffstat (limited to 'cache-tree.c')
-rw-r--r--cache-tree.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/cache-tree.c b/cache-tree.c
index d91743775d..c60cf9140d 100644
--- a/cache-tree.c
+++ b/cache-tree.c
@@ -328,9 +328,11 @@ static int update_one(struct cache_tree *it,
mode = ce->ce_mode;
entlen = pathlen - baselen;
}
- if (mode != S_IFGITLINK && !missing_ok && !has_sha1_file(sha1))
+ if (mode != S_IFGITLINK && !missing_ok && !has_sha1_file(sha1)) {
+ strbuf_release(&buffer);
return error("invalid object %06o %s for '%.*s'",
mode, sha1_to_hex(sha1), entlen+baselen, path);
+ }
if (ce->ce_flags & CE_REMOVE)
continue; /* entry being removed */