To: vim-dev@vim.org Subject: Patch 7.2.113 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit ------------ Patch 7.2.113 Problem: Crash for substitute() call using submatch(1) while there is no such submatch. (Yukihiro Nakadaira) Solution: Also check the start of the submatch is set, it can be NULL when an attempted match didn't work out. Files: src/regexp.c *** ../vim-7.2.112/src/regexp.c Fri Aug 8 13:45:31 2008 --- src/regexp.c Sat Feb 21 21:46:49 2009 *************** *** 4532,4538 **** cleanup_subexpr(); if (!REG_MULTI) /* Single-line regexp */ { ! if (reg_endp[no] == NULL) { /* Backref was not set: Match an empty string. */ len = 0; --- 4532,4538 ---- cleanup_subexpr(); if (!REG_MULTI) /* Single-line regexp */ { ! if (reg_startp[no] == NULL || reg_endp[no] == NULL) { /* Backref was not set: Match an empty string. */ len = 0; *************** *** 4548,4554 **** } else /* Multi-line regexp */ { ! if (reg_endpos[no].lnum < 0) { /* Backref was not set: Match an empty string. */ len = 0; --- 4548,4554 ---- } else /* Multi-line regexp */ { ! if (reg_startpos[no].lnum < 0 || reg_endpos[no].lnum < 0) { /* Backref was not set: Match an empty string. */ len = 0; *************** *** 7279,7291 **** } else { ! if (submatch_match->endp[no] == NULL) retval = NULL; else - { - s = submatch_match->startp[no]; retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s)); - } } return retval; --- 7279,7289 ---- } else { ! s = submatch_match->startp[no]; ! if (s == NULL || submatch_match->endp[no] == NULL) retval = NULL; else retval = vim_strnsave(s, (int)(submatch_match->endp[no] - s)); } return retval; *** ../vim-7.2.112/src/version.c Sat Feb 21 21:22:44 2009 --- src/version.c Sat Feb 21 22:01:56 2009 *************** *** 678,679 **** --- 678,681 ---- { /* Add new patch number below this line */ + /**/ + 113, /**/ -- hundred-and-one symptoms of being an internet addict: 103. When you find yourself in the "Computer" section of Barnes & Noble enjoying yourself. /// 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 ///