]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.975 v7.3.975
authorBram Moolenaar <Bram@vim.org>
Mon, 20 May 2013 11:44:29 +0000 (13:44 +0200)
committerBram Moolenaar <Bram@vim.org>
Mon, 20 May 2013 11:44:29 +0000 (13:44 +0200)
Problem:    Crash in regexp parsing.
Solution:   Correctly compute the end of allocated memory.

src/regexp_nfa.c
src/version.c

index 92292e502cbfc02ae49e0c8b3dcf9914b06919c2..eea173816ab176a2faa73ef58d4fdaacfb87cf6d 100644 (file)
@@ -231,14 +231,19 @@ nfa_regcomp_start(expr, re_flags)
     /* A reasonable estimation for size */
     nstate_max = (STRLEN(expr) + 1) * NFA_POSTFIX_MULTIPLIER;
 
-    /* Size for postfix representation of expr */
+    /* Some items blow up in size, such as [A-z].  Add more space for that.
+     * TODO: some patterns may still fail. */
+//    nstate_max += 1000;
+
+    /* Size for postfix representation of expr. */
     postfix_size = sizeof(*post_start) * nstate_max;
+
     post_start = (int *)lalloc(postfix_size, TRUE);
     if (post_start == NULL)
        return FAIL;
     vim_memset(post_start, 0, postfix_size);
     post_ptr = post_start;
-    post_end = post_start + postfix_size;
+    post_end = post_start + nstate_max;
     nfa_has_zend = FALSE;
 
     regcomp_start(expr, re_flags);
index 6c6b6509b3c806880745afe30f5033392b17ef10..6f07a041687d82ab18dd862530d75bb55f546ce5 100644 (file)
@@ -728,6 +728,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    975,
 /**/
     974,
 /**/