Jared Hance <jaredhance@xxxxxxxxx> writes: > @@ -3712,7 +3712,6 @@ static int apply_patch(int fd, const char *filename, int options) > listp = &patch->next; > } > else { > - /* perhaps free it a bit better? */ > free(patch); This "free it better" comment is not about how to free the "struct patch" itself, but is about the piece of memory pointed at it, "struct fragment", and pieces of patch text pointed at them. The patch text pointed with frag->patch starts out as a location in buf.buf (which will be freed later in this function), but IIRC there were places deeper in the callchain that replace the pointer with allocated memory. > skipped_patch++; > } > @@ -3753,6 +3752,13 @@ static int apply_patch(int fd, const char *filename, int options) > > if (summary) > summary_patch_list(list); > + > + patch_iter = list; > + while(patch_iter != NULL) { while (patch_iter) { > + struct patch *patch_iter_next = patch_iter->next; > + free(patch_iter); > + patch_iter = patch_iter_next; > + } > > strbuf_release(&buf); > return 0; -- 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