diff options
author | Bram Moolenaar <Bram@vim.org> | 2004-09-02 19:12:26 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2004-09-02 19:12:26 +0000 |
commit | d4755bb0e04fca334675f1503bd6474b017a9bba (patch) | |
tree | 8be8df859191e78ee9eef80d3b341fd5d0c1b81b /src/eval.c | |
parent | 269ec658f0fad22b2bf9f71b06a4e6e10277f0e5 (diff) |
updated for version 7.0014
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 21 |
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); } /* |