Fix workdir iterator leak When attempting to create a workdir iterator for a bare repo, don't leak the iterator structure.
diff --git a/src/iterator.c b/src/iterator.c
index a72f97e..ff08c1c 100644
--- a/src/iterator.c
+++ b/src/iterator.c
@@ -1252,16 +1252,14 @@ int git_iterator_for_workdir(
const char *end)
{
int error;
- workdir_iterator *wi = git__calloc(1, sizeof(workdir_iterator));
- GITERR_CHECK_ALLOC(wi);
-
- assert(out && repo);
+ workdir_iterator *wi;
- if ((error = git_repository__ensure_not_bare(
- repo, "scan working directory")) < 0)
- return error;
+ if (git_repository__ensure_not_bare(repo, "scan working directory") < 0)
+ return GIT_EBAREREPO;
/* initialize as an fs iterator then do overrides */
+ wi = git__calloc(1, sizeof(workdir_iterator));
+ GITERR_CHECK_ALLOC(wi);
ITERATOR_BASE_INIT((&wi->fi), fs, FS, repo);
wi->fi.base.type = GIT_ITERATOR_TYPE_WORKDIR;