summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-10-11 14:18:57 -0700
committerJunio C Hamano <gitster@pobox.com>2016-10-11 14:18:57 -0700
commit1f253d88face02b68a86fae36e6722c9ebc73856 (patch)
tree8f644ff0512be5181ccbbc986c8e8fc38d59dbf3
parenta813b19190a75e44b6ebd1ea5317ef5ed914cde0 (diff)
parente94ce1394e17e1b91b943b8d41131b6aadb96b88 (diff)
downloadgit-1f253d88face02b68a86fae36e6722c9ebc73856.tar.gz
Merge branch 'sg/ref-filter-parse-optim' into maint
The code that parses the format parameter of for-each-ref command has seen a micro-optimization. * sg/ref-filter-parse-optim: ref-filter: strip format option after a field name only once while parsing
-rw-r--r--ref-filter.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/ref-filter.c b/ref-filter.c
index 9adbb8af3e..9a8f55e45a 100644
--- a/ref-filter.c
+++ b/ref-filter.c
@@ -235,7 +235,7 @@ int parse_ref_filter_atom(const char *atom, const char *ep)
{
const char *sp;
const char *arg;
- int i, at;
+ int i, at, atom_len;
sp = atom;
if (*sp == '*' && sp < ep)
@@ -250,19 +250,19 @@ int parse_ref_filter_atom(const char *atom, const char *ep)
return i;
}
+ /*
+ * If the atom name has a colon, strip it and everything after
+ * it off - it specifies the format for this entry, and
+ * shouldn't be used for checking against the valid_atom
+ * table.
+ */
+ arg = memchr(sp, ':', ep - sp);
+ atom_len = (arg ? arg : ep) - sp;
+
/* Is the atom a valid one? */
for (i = 0; i < ARRAY_SIZE(valid_atom); i++) {
int len = strlen(valid_atom[i].name);
-
- /*
- * If the atom name has a colon, strip it and everything after
- * it off - it specifies the format for this entry, and
- * shouldn't be used for checking against the valid_atom
- * table.
- */
- arg = memchr(sp, ':', ep - sp);
- if (len == (arg ? arg : ep) - sp &&
- !memcmp(valid_atom[i].name, sp, len))
+ if (len == atom_len && !memcmp(valid_atom[i].name, sp, len))
break;
}