[PATCH] refs.c: handle REFNAME_REFSPEC_PATTERN at end of page
- From
David Turner <dturner@twopensource.com>
- Date
- Jul 5, 2014, 19:00 UTC
- Message-ID
- <1404586859-24464-1-git-send-email-dturner@twitter.com>
- In-Reply-To
- <CAA787rnMonCuON+C0U5FDXKzjTBdpOusCpGLeWytDWaA1torEw@mail.gmail.com>
When a ref crosses a memory page boundary, we restart the parsing at the beginning with the bytewise code. Pass the original flags to that code, rather than the current flags.
Signed-off-by: David Turner <dturner@twitter.com> --- refs.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/refs.c b/refs.c index 20e2bf1..82e4842 100644 --- a/refs.c +++ b/refs.c @@ -153,6 +153,7 @@ int check_refname_format(const char *refname, int flags) const __m128i tilde_lb = _mm_set1_epi8('~' - 1); int component_count = 0; + int orig_flags = flags; if (refname[0] == 0 || refname[0] == '/') { /* entirely empty ref or initial ref component */ @@ -178,7 +179,7 @@ int check_refname_format(const char *refname, int flags) * End-of-page; fall back to slow method for * this entire ref. */ - return check_refname_format_bytewise(refname, flags); + return check_refname_format_bytewise(refname, orig_flags); tmp = _mm_loadu_si128((__m128i *)cp); tmp1 = _mm_loadu_si128((__m128i *)(cp + 1));
-- 2.0.0.390.gcb682f8