[PATCH] Fix memory leaks in read_tree_recursive()
- From
Jonas Fonseca <fonseca@diku.dk>
- Date
- May 4, 2005, 23:19 UTC
- Message-ID
- <20050504231959.GA25475@diku.dk>
This patch fixes memory leaks in the error path of read_tree_recursive().
Signed-off-by: Jonas Fonseca <fonseca@diku.dk>
--- 571c0f4599fbeefd995bbc24480add1575c36c94/tree.c (mode:100644 sha1:4a26603f6e32866c0db8a01ac1c228be801f76c6) +++ uncommitted/tree.c (mode:100644)
@@ -39,14 +39,18 @@ if (S_ISDIR(mode)) { int retval; int pathlen = strlen(path); - char *newbase = xmalloc(baselen + 1 + pathlen); + char *newbase; void *eltbuf; char elttype[20]; unsigned long eltsize; eltbuf = read_sha1_file(sha1, elttype, &eltsize); - if (!eltbuf || strcmp(elttype, "tree")) + if (!eltbuf || strcmp(elttype, "tree")) { + if (eltbuf) mem_free(eltbuf); return -1; + } + + newbase = xmalloc(baselen + 1 + pathlen); memcpy(newbase, base, baselen); memcpy(newbase + baselen, path, pathlen); newbase[baselen + pathlen] = '/';
-- Jonas Fonseca