On Thu, 30 Nov 2017 01:36:37 +0100 (CET)
Johannes Schindelin <johannes.schinde...@gmx.de> wrote:

> Hi Jonathan,
> 
> On Tue, 28 Nov 2017, Jonathan Tan wrote:
> 
> > @@ -4607,7 +4627,14 @@ int diff_opt_parse(struct diff_options *options,
> >             DIFF_XDL_CLR(options, NEED_MINIMAL);
> >             options->xdl_opts &= ~XDF_DIFF_ALGORITHM_MASK;
> >             options->xdl_opts |= value;
> > +           if (value == XDF_PATIENCE_DIFF)
> > +                   clear_patience_anchors(options);
> >             return argcount;
> > +   } else if (skip_prefix(arg, "--anchored=", &arg)) {
> > +           options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
> > +           ALLOC_GROW(options->anchors, options->anchors_nr + 1,
> > +                      options->anchors_alloc);
> > +           options->anchors[options->anchors_nr++] = xstrdup(arg);
> 
> I looked and failed to find the code that releases this array after the
> diff is done... did I miss anything?

You didn't miss anything. As far as I can tell, occurrences of struct
diff_options live throughout the lifetime of an invocation of Git and
are not freed. (Even if the struct itself is allocated on the stack, its
pathspec has some elements allocated on the heap.)

Reply via email to