From bbe24da869a071e5dd203f2ff7e249ec06ac6c95 Mon Sep 17 00:00:00 2001 From: Nikolay Orlyuk Date: Sun, 4 May 2014 19:51:31 +0300 Subject: fix strict-overflow cases #3236 --- src/nvim/getchar.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'src/nvim/getchar.c') diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index 6a6e4f2214..604425b3ba 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -4109,7 +4109,6 @@ check_map ( int hash; int len, minlen; mapblock_T *mp; - char_u *s; int local; validate_maphash(); @@ -4133,17 +4132,14 @@ check_map ( /* skip entries with wrong mode, wrong length and not matching * ones */ if ((mp->m_mode & mode) && (!exact || mp->m_keylen == len)) { - if (len > mp->m_keylen) - minlen = mp->m_keylen; - else - minlen = len; - s = mp->m_keys; - if (ign_mod && s[0] == K_SPECIAL && s[1] == KS_MODIFIER - && s[2] != NUL) { + char_u *s = mp->m_keys; + int keylen = mp->m_keylen; + if (ign_mod && keylen >= 3 + && s[0] == K_SPECIAL && s[1] == KS_MODIFIER) { s += 3; - if (len > mp->m_keylen - 3) - minlen = mp->m_keylen - 3; + keylen -= 3; } + minlen = keylen < len ? keylen : len; if (STRNCMP(s, keys, minlen) == 0) { if (mp_ptr != NULL) *mp_ptr = mp; -- cgit