diff: make sure we free all allocated resources

When the creation of one iterator fails, we need to free the prefix
and possibly one of the iterators. Make sure we do so.
This commit is contained in:
Carlos Martín Nieto 2012-06-20 02:15:42 +02:00
parent c06e000394
commit 1d94a7d0f6

View File

@ -705,11 +705,16 @@ int git_diff_index_to_tree(
if (git_iterator_for_tree_range(&a, repo, old_tree, prefix, prefix) < 0 || if (git_iterator_for_tree_range(&a, repo, old_tree, prefix, prefix) < 0 ||
git_iterator_for_index_range(&b, repo, prefix, prefix) < 0) git_iterator_for_index_range(&b, repo, prefix, prefix) < 0)
return -1; goto on_error;
git__free(prefix); git__free(prefix);
return diff_from_iterators(repo, opts, a, b, diff); return diff_from_iterators(repo, opts, a, b, diff);
on_error:
git__free(prefix);
git_iterator_free(a);
return -1;
} }
int git_diff_workdir_to_index( int git_diff_workdir_to_index(
@ -724,11 +729,16 @@ int git_diff_workdir_to_index(
if (git_iterator_for_index_range(&a, repo, prefix, prefix) < 0 || if (git_iterator_for_index_range(&a, repo, prefix, prefix) < 0 ||
git_iterator_for_workdir_range(&b, repo, prefix, prefix) < 0) git_iterator_for_workdir_range(&b, repo, prefix, prefix) < 0)
return -1; goto on_error;
git__free(prefix); git__free(prefix);
return diff_from_iterators(repo, opts, a, b, diff); return diff_from_iterators(repo, opts, a, b, diff);
on_error:
git__free(prefix);
git_iterator_free(a);
return -1;
} }
@ -745,11 +755,16 @@ int git_diff_workdir_to_tree(
if (git_iterator_for_tree_range(&a, repo, old_tree, prefix, prefix) < 0 || if (git_iterator_for_tree_range(&a, repo, old_tree, prefix, prefix) < 0 ||
git_iterator_for_workdir_range(&b, repo, prefix, prefix) < 0) git_iterator_for_workdir_range(&b, repo, prefix, prefix) < 0)
return -1; goto on_error;
git__free(prefix); git__free(prefix);
return diff_from_iterators(repo, opts, a, b, diff); return diff_from_iterators(repo, opts, a, b, diff);
on_error:
git__free(prefix);
git_iterator_free(a);
return -1;
} }
int git_diff_merge( int git_diff_merge(