From: Bram Moolenaar Date: Mon, 13 Apr 2015 13:28:12 +0000 (+0200) Subject: patch 7.4.696 X-Git-Tag: v7.4.696 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=50ab994ab34fcbe0046a9a998ee420be196334ba;p=vim patch 7.4.696 Problem: Not freeing memory when encountering an error. Solution: Free the stack before returning. (Eliseo Martínez) --- diff --git a/src/regexp_nfa.c b/src/regexp_nfa.c index e67f6380c..825f960ca 100644 --- a/src/regexp_nfa.c +++ b/src/regexp_nfa.c @@ -3156,6 +3156,7 @@ post2nfa(postfix, end, nfa_calc_size) if (stackp < stack) \ { \ st_error(postfix, end, p); \ + vim_free(stack); \ return NULL; \ } @@ -3632,10 +3633,16 @@ post2nfa(postfix, end, nfa_calc_size) e = POP(); if (stackp != stack) + { + vim_free(stack); EMSG_RET_NULL(_("E875: (NFA regexp) (While converting from postfix to NFA), too many states left on stack")); + } if (istate >= nstate) + { + vim_free(stack); EMSG_RET_NULL(_("E876: (NFA regexp) Not enough space to store the whole NFA ")); + } matchstate = &state_ptr[istate++]; /* the match state */ matchstate->c = NFA_MATCH; diff --git a/src/version.c b/src/version.c index 4cbf4b6ae..21261e4d2 100644 --- a/src/version.c +++ b/src/version.c @@ -741,6 +741,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 696, /**/ 695, /**/