Commit b183a92fc2f030acf4c8e0cd76a5259d8f65669a

Ben Straub 2012-05-31T13:42:58

Rev-parse: Plug memory leaks.

diff --git a/src/revparse.c b/src/revparse.c
index 1e78d76..60e819c 100644
--- a/src/revparse.c
+++ b/src/revparse.c
@@ -541,6 +541,7 @@ static const git_tree_entry* git_tree_entry_bypath(git_tree *tree, git_repositor
 {
    char *str = git__strdup(path);
    char *tok;
+   void *alloc = str;
    git_tree *tree2 = tree;
    const git_tree_entry *entry;
 
@@ -549,11 +550,13 @@ static const git_tree_entry* git_tree_entry_bypath(git_tree *tree, git_repositor
       if (tree2 != tree) git_tree_free(tree2);
       if (entry_is_tree(entry)) {
          if (git_tree_lookup(&tree2, repo, &entry->oid) < 0) {
+            free(alloc);
             return NULL;
          }
       }
    }
 
+   free(alloc);
    return entry;
 }
 
@@ -573,6 +576,7 @@ static int handle_colon_syntax(git_object **out,
 
    /* Find the blob at the given path. */
    entry = git_tree_entry_bypath(tree, repo, path);
+   git_tree_free(tree);
    return git_tree_entry_2object(out, repo, entry);
 }