140 lines
4.1 KiB
Plaintext
140 lines
4.1 KiB
Plaintext
To: vim-dev@vim.org
|
|
Subject: Patch 7.0.021
|
|
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.0.021
|
|
Problem: Crash when using "\\[" and "\\]" in 'errorformat'. (Marc Weber)
|
|
Solution: Check for valid submatches after matching the pattern.
|
|
Files: src/quickfix.c
|
|
|
|
|
|
*** ../vim-7.0.020/src/quickfix.c Wed May 3 23:23:30 2006
|
|
--- src/quickfix.c Tue Jun 20 17:04:20 2006
|
|
***************
|
|
*** 602,614 ****
|
|
else
|
|
type = 0;
|
|
/*
|
|
! * Extract error message data from matched line
|
|
*/
|
|
if ((i = (int)fmt_ptr->addr[0]) > 0) /* %f */
|
|
{
|
|
! int c = *regmatch.endp[i];
|
|
|
|
/* Expand ~/file and $HOME/file to full path. */
|
|
*regmatch.endp[i] = NUL;
|
|
expand_env(regmatch.startp[i], namebuf, CMDBUFFSIZE);
|
|
*regmatch.endp[i] = c;
|
|
--- 602,620 ----
|
|
else
|
|
type = 0;
|
|
/*
|
|
! * Extract error message data from matched line.
|
|
! * We check for an actual submatch, because "\[" and "\]" in
|
|
! * the 'errorformat' may cause the wrong submatch to be used.
|
|
*/
|
|
if ((i = (int)fmt_ptr->addr[0]) > 0) /* %f */
|
|
{
|
|
! int c;
|
|
!
|
|
! if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
|
|
! continue;
|
|
|
|
/* Expand ~/file and $HOME/file to full path. */
|
|
+ c = *regmatch.endp[i];
|
|
*regmatch.endp[i] = NUL;
|
|
expand_env(regmatch.startp[i], namebuf, CMDBUFFSIZE);
|
|
*regmatch.endp[i] = c;
|
|
***************
|
|
*** 618,652 ****
|
|
--- 624,686 ----
|
|
continue;
|
|
}
|
|
if ((i = (int)fmt_ptr->addr[1]) > 0) /* %n */
|
|
+ {
|
|
+ if (regmatch.startp[i] == NULL)
|
|
+ continue;
|
|
enr = (int)atol((char *)regmatch.startp[i]);
|
|
+ }
|
|
if ((i = (int)fmt_ptr->addr[2]) > 0) /* %l */
|
|
+ {
|
|
+ if (regmatch.startp[i] == NULL)
|
|
+ continue;
|
|
lnum = atol((char *)regmatch.startp[i]);
|
|
+ }
|
|
if ((i = (int)fmt_ptr->addr[3]) > 0) /* %c */
|
|
+ {
|
|
+ if (regmatch.startp[i] == NULL)
|
|
+ continue;
|
|
col = (int)atol((char *)regmatch.startp[i]);
|
|
+ }
|
|
if ((i = (int)fmt_ptr->addr[4]) > 0) /* %t */
|
|
+ {
|
|
+ if (regmatch.startp[i] == NULL)
|
|
+ continue;
|
|
type = *regmatch.startp[i];
|
|
+ }
|
|
if (fmt_ptr->flags == '+' && !multiscan) /* %+ */
|
|
STRCPY(errmsg, IObuff);
|
|
else if ((i = (int)fmt_ptr->addr[5]) > 0) /* %m */
|
|
{
|
|
+ if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
|
|
+ continue;
|
|
len = (int)(regmatch.endp[i] - regmatch.startp[i]);
|
|
vim_strncpy(errmsg, regmatch.startp[i], len);
|
|
}
|
|
if ((i = (int)fmt_ptr->addr[6]) > 0) /* %r */
|
|
+ {
|
|
+ if (regmatch.startp[i] == NULL)
|
|
+ continue;
|
|
tail = regmatch.startp[i];
|
|
+ }
|
|
if ((i = (int)fmt_ptr->addr[7]) > 0) /* %p */
|
|
{
|
|
+ if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
|
|
+ continue;
|
|
col = (int)(regmatch.endp[i] - regmatch.startp[i] + 1);
|
|
if (*((char_u *)regmatch.startp[i]) != TAB)
|
|
use_viscol = TRUE;
|
|
}
|
|
if ((i = (int)fmt_ptr->addr[8]) > 0) /* %v */
|
|
{
|
|
+ if (regmatch.startp[i] == NULL)
|
|
+ continue;
|
|
col = (int)atol((char *)regmatch.startp[i]);
|
|
use_viscol = TRUE;
|
|
}
|
|
if ((i = (int)fmt_ptr->addr[9]) > 0) /* %s */
|
|
{
|
|
+ if (regmatch.startp[i] == NULL || regmatch.endp[i] == NULL)
|
|
+ continue;
|
|
len = (int)(regmatch.endp[i] - regmatch.startp[i]);
|
|
if (len > CMDBUFFSIZE - 5)
|
|
len = CMDBUFFSIZE - 5;
|
|
*** ../vim-7.0.020/src/version.c Tue Jun 20 16:33:21 2006
|
|
--- src/version.c Tue Jun 20 17:07:25 2006
|
|
***************
|
|
*** 668,669 ****
|
|
--- 668,671 ----
|
|
{ /* Add new patch number below this line */
|
|
+ /**/
|
|
+ 21,
|
|
/**/
|
|
|
|
--
|
|
TALL KNIGHT: We are now no longer the Knights Who Say Ni!
|
|
ONE KNIGHT: Ni!
|
|
OTHERS: Sh!
|
|
ONE KNIGHT: (whispers) Sorry.
|
|
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
|
|
|
|
/// 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 ///
|