summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2016-10-06 21:53:12 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-10-06 21:53:12 (GMT)
commit51d517b9bbb58904a3f9ded068d7f111620a4db4 (patch)
treea06b6fe76ea045fba3c49db276ee699fb3196316
parentf0798e6cdbf99515391242e20f8df495a14e9c22 (diff)
parente94ce1394e17e1b91b943b8d41131b6aadb96b88 (diff)
downloadgit-51d517b9bbb58904a3f9ded068d7f111620a4db4.zip
git-51d517b9bbb58904a3f9ded068d7f111620a4db4.tar.gz
git-51d517b9bbb58904a3f9ded068d7f111620a4db4.tar.bz2
Merge branch 'sg/ref-filter-parse-optim'
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 9adbb8a..9a8f55e 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;
}