diff --git a/7.0.144 b/7.0.144 new file mode 100644 index 0000000..4f5176a --- /dev/null +++ b/7.0.144 @@ -0,0 +1,219 @@ +To: vim-dev@vim.org +Subject: Patch 7.0.144 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.0.144 +Problem: May compare two unrelated pointers when matching a pattern against + a string. (Dominique Pelle) +Solution: Avoid calling reg_getline() when REG_MULTI is false. +Files: src/regexp.c + + +*** ../vim-7.0.143/src/regexp.c Tue Aug 29 17:28:56 2006 +--- src/regexp.c Tue Oct 17 18:30:18 2006 +*************** +*** 3777,3784 **** + + op = OP(scan); + /* Check for character class with NL added. */ +! if (!reg_line_lbr && WITH_NL(op) && *reginput == NUL +! && reglnum <= reg_maxline) + { + reg_nextline(); + } +--- 3777,3784 ---- + + op = OP(scan); + /* Check for character class with NL added. */ +! if (!reg_line_lbr && WITH_NL(op) && REG_MULTI +! && *reginput == NUL && reglnum <= reg_maxline) + { + reg_nextline(); + } +*************** +*** 4855,4862 **** + break; + + case NEWL: +! if ((c != NUL || reglnum > reg_maxline || reg_line_lbr) +! && (c != '\n' || !reg_line_lbr)) + status = RA_NOMATCH; + else if (reg_line_lbr) + ADVANCE_REGINPUT(); +--- 4855,4862 ---- + break; + + case NEWL: +! if ((c != NUL || !REG_MULTI || reglnum > reg_maxline +! || reg_line_lbr) && (c != '\n' || !reg_line_lbr)) + status = RA_NOMATCH; + else if (reg_line_lbr) + ADVANCE_REGINPUT(); +*************** +*** 5316,5323 **** + ++count; + mb_ptr_adv(scan); + } +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr +! || count == maxcount) + break; + ++count; /* count the line-break */ + reg_nextline(); +--- 5316,5323 ---- + ++count; + mb_ptr_adv(scan); + } +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr || count == maxcount) + break; + ++count; /* count the line-break */ + reg_nextline(); +*************** +*** 5341,5347 **** + } + else if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5341,5348 ---- + } + else if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5370,5376 **** + } + else if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5371,5378 ---- + } + else if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5399,5405 **** + } + else if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5401,5408 ---- + } + else if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5424,5430 **** + { + if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5427,5434 ---- + { + if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5454,5460 **** + #endif + if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5458,5465 ---- + #endif + if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5617,5623 **** + #endif + if (*scan == NUL) + { +! if (!WITH_NL(OP(p)) || reglnum > reg_maxline || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +--- 5622,5629 ---- + #endif + if (*scan == NUL) + { +! if (!REG_MULTI || !WITH_NL(OP(p)) || reglnum > reg_maxline +! || reg_line_lbr) + break; + reg_nextline(); + scan = reginput; +*************** +*** 5646,5653 **** + + case NEWL: + while (count < maxcount +! && ((*scan == NUL && reglnum <= reg_maxline && !reg_line_lbr) +! || (*scan == '\n' && reg_line_lbr))) + { + count++; + if (reg_line_lbr) +--- 5652,5659 ---- + + case NEWL: + while (count < maxcount +! && ((*scan == NUL && reglnum <= reg_maxline && !reg_line_lbr +! && REG_MULTI) || (*scan == '\n' && reg_line_lbr))) + { + count++; + if (reg_line_lbr) +*** ../vim-7.0.143/src/version.c Tue Oct 17 18:36:03 2006 +--- src/version.c Tue Oct 17 18:48:51 2006 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 144, + /**/ + +-- +Be thankful to be in a traffic jam, because it means you own a car. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ download, build and distribute -- http://www.A-A-P.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org ///