On Wed, Jun 8, 2016 at 3:46 AM, Pranit Bauva <pranit.bauva@xxxxxxxxx> wrote: > On Wed, Jun 8, 2016 at 4:01 AM, Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote: >> On Tue, Jun 7, 2016 at 4:54 PM, Pranit Bauva <pranit.bauva@xxxxxxxxx> wrote: >>> + struct string_list *refs = cb_data; >>> + char *ref = xstrfmt("refs/bisect/%s", refname); >> >> Here you're allocating a string... >> >>> + string_list_append(refs, ref); >>> + return 0; >>> +} >>> + >>> +int bisect_clean_state(void) >>> +{ >>> + int result = 0; >>> + struct string_list refs_for_removal = STRING_LIST_INIT_DUP; >>> + for_each_ref_in("refs/bisect/", mark_for_removal, (void *) &refs_for_removal); >> >> ...and the allocated string gets inserted into a string_list which >> itself duplicates the string (STRING_LIST_INIT_DUP), so this is >> leaking the string you created with xstrfmt(), isn't it? > > Yes nice catch. I would prefer using the string_list with > STRING_LIST_INIT_DUP and free the ref. That's unnecessarily wasteful. Better would be to to use STRING_LIST_INIT_NODUP. -- 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