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
{
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++;
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
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