To: vim-dev@vim.org
Subject: Patch 7.2.113
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
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 ///