summaryrefslogtreecommitdiff
path: root/src/misc2.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2015-08-27 22:30:47 +0200
committerBram Moolenaar <Bram@vim.org>2015-08-27 22:30:47 +0200
commitd43f0951bca162d4491d57df9277b5dbc462944f (patch)
tree991fb61c507ad6a26a63b735118c07ca442e93f4 /src/misc2.c
parentcdf0442d009ea97fad06d72231f7de309c75205a (diff)
downloadvim-git-d43f0951bca162d4491d57df9277b5dbc462944f.tar.gz
patch 7.4.843v7.4.843
Problem: Still possible to go beyond the end of a string. Solution: Check for NUL also in second string. (Dominique Pelle)
Diffstat (limited to 'src/misc2.c')
-rw-r--r--src/misc2.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/misc2.c b/src/misc2.c
index a4a65d6aa..379916b39 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -5059,6 +5059,8 @@ ff_wc_equal(s1, s2)
char_u *s2;
{
int i, j;
+ int c1 = NUL;
+ int c2 = NUL;
int prev1 = NUL;
int prev2 = NUL;
@@ -5068,21 +5070,21 @@ ff_wc_equal(s1, s2)
if (s1 == NULL || s2 == NULL)
return FALSE;
- for (i = 0, j = 0; s1[i] != NUL;)
+ for (i = 0, j = 0; s1[i] != NUL && s2[j] != NUL;)
{
- int c1 = PTR2CHAR(s1 + i);
- int c2 = PTR2CHAR(s2 + j);
+ c1 = PTR2CHAR(s1 + i);
+ c2 = PTR2CHAR(s2 + j);
if ((p_fic ? MB_TOLOWER(c1) != MB_TOLOWER(c2) : c1 != c2)
&& (prev1 != '*' || prev2 != '*'))
- return FAIL;
+ return FALSE;
prev2 = prev1;
prev1 = c1;
i += MB_PTR2LEN(s1 + i);
j += MB_PTR2LEN(s2 + j);
}
- return TRUE;
+ return c1 == c2;
}
#endif