Merge branch 'dk/skip-prefix-scan-only-once'

Update implementation of skip_prefix() to scan only once; given
that most "prefix" arguments to the inline function are constant
strings whose strlen() can be determined at the compile time, this
might actually make things worse with a compiler with sufficient
intelligence.

* dk/skip-prefix-scan-only-once:
  skip_prefix(): scan prefix only once
This commit is contained in:
Junio C Hamano 2014-03-21 12:47:41 -07:00
commit 1be645c0b1

View File

@ -343,8 +343,11 @@ extern int ends_with(const char *str, const char *suffix);
static inline const char *skip_prefix(const char *str, const char *prefix) static inline const char *skip_prefix(const char *str, const char *prefix)
{ {
size_t len = strlen(prefix); do {
return strncmp(str, prefix, len) ? NULL : str + len; if (!*prefix)
return str;
} while (*str++ == *prefix++);
return NULL;
} }
#if defined(NO_MMAP) || defined(USE_WIN32_MMAP) #if defined(NO_MMAP) || defined(USE_WIN32_MMAP)