diff --git a/src/linematch.c b/src/linematch.c index c1463fdf1..17e932d00 100644 --- a/src/linematch.c +++ b/src/linematch.c @@ -34,14 +34,10 @@ static size_t test_charmatch_paths(diffcmppath_T *node, int lastdecision); line_len(const mmfile_t *m) { char *s = m->ptr; - size_t n = (size_t)m->size; char *end; - end = vim_strnchr(s, &n, '\n'); - if (end) - return (size_t)(end - s); - - return (size_t)m->size; + end = memchr(s, '\n', (size_t)m->size); + return end ? (size_t)(end - s) : (size_t)m->size; } #define MATCH_CHAR_MAX_LEN 800 @@ -171,10 +167,11 @@ fastforward_buf_to_lnum(mmfile_t s, linenr_T lnum) { for (int i = 0; i < lnum - 1; i++) { - size_t n = (size_t)s.size; + char *line_end; - s.ptr = vim_strnchr(s.ptr, &n, '\n'); - s.size = (int)n; + line_end = memchr(s.ptr, '\n', (size_t)s.size); + s.size = line_end ? (int)(s.size - (line_end - s.ptr)) : 0; + s.ptr = line_end; if (!s.ptr) break; s.ptr++; diff --git a/src/strings.c b/src/strings.c index 120d39355..5de3162bb 100644 --- a/src/strings.c +++ b/src/strings.c @@ -674,22 +674,6 @@ vim_strchr(char_u *string, int c) return NULL; } -// Sized version of strchr that can handle embedded NULs. -// Adjusts n to the new size. - char * -vim_strnchr(const char *p, size_t *n, int c) -{ - while (*n > 0) - { - if (*p == c) - return (char *)p; - p++; - (*n)--; - } - - return NULL; -} - /* * Version of strchr() that only works for bytes and handles unsigned char * strings with characters above 128 correctly. It also doesn't return a @@ -3558,8 +3542,6 @@ vim_vsnprintf_typval( str_arg_l = 0; else { - // Don't put the #if inside memchr(), it can be a - // macro. // memchr on HP does not like n > 2^31 !!! char *q = memchr(str_arg, '\0', precision <= (size_t)0x7fffffffL ? precision diff --git a/src/version.c b/src/version.c index fe4e41810..d71d4d170 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1076, /**/ 1075, /**/