Brandon Casey <casey@xxxxxxxxxxxxxxx> writes: > Maybe we should also begin the process of not leaking memory here... > > diff --git a/remote.c b/remote.c > index 7f2897b..984ad1b 100644 > --- a/remote.c > +++ b/remote.c > @@ -449,6 +449,20 @@ static int verify_refname(char *name, int is_glob) > return result; > } > > +void free_refspecs(struct refspec *refspec, int nr_refspec) > +{ > + int i; > + > + if (!refspec) > + return; > + > + for (i = 0; i < nr_refspec; i++) { > + free(refspec[i].src); > + free(refspec[i].dst); > + } > + free(refspec); > +} Are you sure all the codepaths that stuff refspec[].{src,dst} give freeable pointer? E.g. if anybody splits a originally single string "refs/heads/foo:refs/remotes/origin/foo" into two by replacing the colon with NUL and pointing the halves, and/or such string came from argv[] without strdup(), I'd imagine free() would not like you very much. I didn't look, though. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html