On Fri, Jul 27, 2007 at 11:28:54AM +0200, Martin Toft wrote:
> On Thu, Jul 26, 2007 at 07:30:47PM -0500, Larson, David wrote:
> > matchadd() produces a runtime error. To reproduce:
> >
> > :highlight MyGroup ctermbg=green guibg=green
> > :let m = matchadd("MyGroup", "TODO")
> > :let m = matchadd("MyGroup", "name")
> >
> > E685: Internal error: get_tv_number()
>
> Hi,
>
> being the author of this patch, I'm eager to help.
>
> It seems to be a weird kind of bug -- with debugging on (-g), I cannot
> reproduce it anymore. I'll have to look into it and get back to you.
>
> Thanks for the feedback, and I'm sorry that my patch causes this.
>
> MartinHere is a patch that fixes the problem on my machine. Please try it out. When applied, the optional fourth argument to matchadd() is only checked for when there was a third argument. Martin
Index: eval.c
===================================================================
RCS file: /cvsroot/vim/vim7/src/eval.c,v
retrieving revision 1.220
diff -c -r1.220 eval.c
*** eval.c 26 Jul 2007 20:58:42 -0000 1.220
--- eval.c 27 Jul 2007 14:55:54 -0000
***************
*** 12526,12534 ****
if (grp == NULL || pat == NULL)
return;
if (argvars[2].v_type != VAR_UNKNOWN)
prio = get_tv_number_chk(&argvars[2], &error);
! if (argvars[3].v_type != VAR_UNKNOWN)
! id = get_tv_number_chk(&argvars[3], &error);
if (error == TRUE)
return;
if (id >= 1 && id <= 3)
--- 12526,12536 ----
if (grp == NULL || pat == NULL)
return;
if (argvars[2].v_type != VAR_UNKNOWN)
+ {
prio = get_tv_number_chk(&argvars[2], &error);
! if (argvars[3].v_type != VAR_UNKNOWN)
! id = get_tv_number_chk(&argvars[3], &error);
! }
if (error == TRUE)
return;
if (id >= 1 && id <= 3)
signature.asc
Description: Digital signature
