On Tue, Jun 10, 2014 at 02:35:48PM -0700, Junio C Hamano wrote:

> Jeff King <p...@peff.net> writes:
> 
> > In both blame and merge-recursive, we sometimes create a
> > "fake" commit struct for convenience (e.g., to represent the
> > HEAD state as if we would commit it). By allocating
> > ourselves rather than using alloc_commit_node, we do not
> > properly set the "index" field of the commit. This can
> > produce subtle bugs if we then use commit-slab on the
> > resulting commit, as we will share the "0" index with
> > another commit.
> 
> The change I see here is all good, but I wonder if it is too late to
> start the real index from 1 and catch anything that has 0 index with
> a BUG("do not hand-allocate a commit").

Yeah, I had a similar thought while writing the series. I do not think
it is too late at all. It would just waste one commit's worth of memory
in the slab, but that is not a big deal. Other than slab_at, no callers
should care.

It would cost an extra conditional in each call to slab_at. That
probably doesn't matter, though the original goal was to make slab_at as
fast as an indirect pointer dereference (it's not quite these days,
though, as we have to do a little division to find the right section of
the slab).

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to