From: Junio C Hamano Date: Mon, 27 Sep 2010 22:19:51 GMT Subject: Re: [PATCH 3/6] pathspec: cache string length when initialize pathspec Message-ID: <7v62xqx20o.fsf@alter.siamese.dyndns.org> In-Reply-To: <1284938514-16663-4-git-send-email-pclouds@gmail.com> Nguyễn Thái Ngọc Duy writes: > Subject: Re: [PATCH 3/6] pathspec: cache string length when initialize pathspec s/initialize/initializing/; > This field will be used when tree_entry_interesting() is converted to > use struct pathspec. Currently it uses pathlens[] in struct > diff_options to avoid calculating string over and over again. > > Signed-off-by: Nguyễn Thái Ngọc Duy > --- > cache.h | 3 +++ > dir.c | 11 ++++++++++- > 2 files changed, 13 insertions(+), 1 deletions(-) > > diff --git a/cache.h b/cache.h > index 6227ddb..045c9fc 100644 > --- a/cache.h > +++ b/cache.h > @@ -495,6 +495,9 @@ extern int ie_modified(const struct index_state *, struct cache_entry *, struct > struct pathspec { > const char **raw; > int nr; > + struct pathspec_item { > + int len; > + } *items; Hmm... I would have expected to see struct pathspec_item { const char *pattern; int len; }; struct pathspec { struct pathspec_item *items; int nr; }; as you would be allocating a structure anyway, but persumably many places take their input as a NULL terminated "char **" array, and keeping such an array around as the "raw" field may be easier in refactoring.