summaryrefslogtreecommitdiff
path: root/read-cache.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 /read-cache.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 'read-cache.c')
-rw-r--r--read-cache.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/read-cache.c b/read-cache.c
index f1f789b7b8..1f42473e80 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -1516,6 +1516,7 @@ static int ce_write_entry(git_SHA_CTX *c, int fd, struct cache_entry *ce)
int size = ondisk_ce_size(ce);
struct ondisk_cache_entry *ondisk = xcalloc(1, size);
char *name;
+ int result;
ondisk->ctime.sec = htonl(ce->ce_ctime.sec);
ondisk->mtime.sec = htonl(ce->ce_mtime.sec);
@@ -1539,7 +1540,9 @@ static int ce_write_entry(git_SHA_CTX *c, int fd, struct cache_entry *ce)
name = ondisk->name;
memcpy(name, ce->name, ce_namelen(ce));
- return ce_write(c, fd, ondisk, size);
+ result = ce_write(c, fd, ondisk, size);
+ free(ondisk);
+ return result;
}
int write_index(struct index_state *istate, int newfd)