On Wed, Jun 8, 2016 at 3:46 AM, Pranit Bauva [off-list ref] wrote:
On Wed, Jun 8, 2016 at 4:01 AM, Eric Sunshine [off-list ref] wrote:
quoted
On Tue, Jun 7, 2016 at 4:54 PM, Pranit Bauva [off-list ref] wrote:
quoted
+ struct string_list *refs = cb_data;
+ char *ref = xstrfmt("refs/bisect/%s", refname);
Here you're allocating a string...
quoted
+ 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.