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
This commit is contained in:
Junio C Hamano 2016-10-11 14:18:57 -07:00
Родитель a813b19190 e94ce1394e
Коммит 1f253d88fa
1 изменённых файлов: 11 добавлений и 11 удалений

Просмотреть файл

@ -235,7 +235,7 @@ int parse_ref_filter_atom(const char *atom, const char *ep)
{ {
const char *sp; const char *sp;
const char *arg; const char *arg;
int i, at; int i, at, atom_len;
sp = atom; sp = atom;
if (*sp == '*' && sp < ep) if (*sp == '*' && sp < ep)
@ -250,19 +250,19 @@ int parse_ref_filter_atom(const char *atom, const char *ep)
return i; 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? */ /* Is the atom a valid one? */
for (i = 0; i < ARRAY_SIZE(valid_atom); i++) { for (i = 0; i < ARRAY_SIZE(valid_atom); i++) {
int len = strlen(valid_atom[i].name); int len = strlen(valid_atom[i].name);
if (len == atom_len && !memcmp(valid_atom[i].name, sp, len))
/*
* 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))
break; break;
} }