summaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2004-09-02 19:12:26 +0000
committerBram Moolenaar <Bram@vim.org>2004-09-02 19:12:26 +0000
commitd4755bb0e04fca334675f1503bd6474b017a9bba (patch)
tree8be8df859191e78ee9eef80d3b341fd5d0c1b81b /src/eval.c
parent269ec658f0fad22b2bf9f71b06a4e6e10277f0e5 (diff)
updated for version 7.0014
Diffstat (limited to 'src/eval.c')
-rw-r--r--src/eval.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/eval.c b/src/eval.c
index 4e6c7b6a52..756c5fe75a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -7341,19 +7341,22 @@ f_strridx(argvars, retvar)
needle = get_var_string(&argvars[1]);
haystack = get_var_string_buf(&argvars[0], buf);
- rest = haystack;
- while (*haystack != '\0')
- {
- rest = (char_u *)strstr((char *)rest, (char *)needle);
- if (rest == NULL)
- break;
- lastmatch = rest++;
- }
+ if (*needle == NUL)
+ /* Empty string matches past the end. */
+ lastmatch = haystack + STRLEN(haystack);
+ else
+ for (rest = haystack; *rest != '\0'; ++rest)
+ {
+ rest = (char_u *)strstr((char *)rest, (char *)needle);
+ if (rest == NULL)
+ break;
+ lastmatch = rest;
+ }
if (lastmatch == NULL)
retvar->var_val.var_number = -1;
else
- retvar->var_val.var_number = (varnumber_T) (lastmatch - haystack);
+ retvar->var_val.var_number = (varnumber_T)(lastmatch - haystack);
}
/*