diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2012-10-05 11:41:01 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2012-10-05 12:27:35 -0700 |
commit | cd6a0b265e4cbfd973e81b5f811e6d8eb4311b9b (patch) | |
tree | 43bd348ec8b559ac414b83ae381af875d542b49a /attr.c | |
parent | bafc478f1618534fcb85bedc0fa224bd2d462441 (diff) | |
download | git-cd6a0b265e4cbfd973e81b5f811e6d8eb4311b9b.tar.gz |
attr: avoid strlen() on every match
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'attr.c')
-rw-r--r-- | attr.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -277,6 +277,7 @@ static struct match_attr *parse_attr_line(const char *line, const char *src, static struct attr_stack { struct attr_stack *prev; char *origin; + size_t originlen; unsigned num_matches; unsigned alloc; struct match_attr **attrs; @@ -527,6 +528,7 @@ static void bootstrap_attr_stack(void) if (!is_bare_repository() || direction == GIT_ATTR_INDEX) { elem = read_attr(GITATTRIBUTES_FILE, 1); elem->origin = xstrdup(""); + elem->originlen = 0; elem->prev = attr_stack; attr_stack = elem; debug_push(elem); @@ -620,7 +622,7 @@ static void prepare_attr_stack(const char *path) strbuf_addstr(&pathbuf, GITATTRIBUTES_FILE); elem = read_attr(pathbuf.buf, 0); strbuf_setlen(&pathbuf, cp - path); - elem->origin = strbuf_detach(&pathbuf, NULL); + elem->origin = strbuf_detach(&pathbuf, &elem->originlen); elem->prev = attr_stack; attr_stack = elem; debug_push(elem); @@ -695,7 +697,7 @@ static int fill(const char *path, int pathlen, struct attr_stack *stk, int rem) if (a->is_macro) continue; if (path_matches(path, pathlen, - a->u.pattern, base, strlen(base))) + a->u.pattern, base, stk->originlen)) rem = fill_one("fill", a, rem); } return rem; |