patch 7.4.696 Problem: Not freeing memory when encountering an error. Solution: Free the stack before returning. (Eliseo Martínez)

This commit is contained in:
Bram Moolenaar
2015-04-13 15:28:23 +02:00
committed by Douglas Drumond
parent 4ac7802562
commit aaa44bf0c0
2 changed files with 9 additions and 0 deletions
+7
View File
@@ -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;
+2
View File
@@ -756,6 +756,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
696,
/**/
695,
/**/