On Thu, 30 Nov 2017 01:36:37 +0100 (CET) Johannes Schindelin <Johannes.Schindelin@xxxxxx> 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.)