updated for version 7.4.344
Problem: Unessecary initializations and other things related to
matchaddpos().
Solution: Code cleanup. (Alexey Radkov)
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 1421d54..695ac1f 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -4391,17 +4391,17 @@
required, for example to highlight matching parentheses.
The list {pos} can contain one of these items:
- - A number. This while line will be highlighted. The first
+ - A number. This whole line will be highlighted. The first
line has number 1.
- A list with one number, e.g., [23]. The whole line with this
number will be highlighted.
- A list with two numbers, e.g., [23, 11]. The first number is
- the line number, the second one the column number (first
- column is 1). The character at this position will be
- highlighted.
+ the line number, the second one is the column number (first
+ column is 1, the value must correspond to the byte index as
+ |col()| would return). The character at this position will
+ be highlighted.
- A list with three numbers, e.g., [23, 11, 3]. As above, but
- the third number gives the length of the highlight in screen
- cells.
+ the third number gives the length of the highlight in bytes.
The maximum number of positions is 8.
diff --git a/src/screen.c b/src/screen.c
index 388a298..8e61691 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -7531,7 +7531,7 @@
colnr_T mincol; /* minimal column for a match */
{
int i;
- int bot = -1;
+ int bot = -1;
shl->lnum = 0;
for (i = posmatch->cur; i < MAXPOSMATCH; i++)
diff --git a/src/version.c b/src/version.c
index 8282a83..adb9ef4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -735,6 +735,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 344,
+/**/
343,
/**/
342,
diff --git a/src/window.c b/src/window.c
index 914f88e..96d4771 100644
--- a/src/window.c
+++ b/src/window.c
@@ -6813,7 +6813,6 @@
m->id = id;
m->priority = prio;
m->pattern = pat == NULL ? NULL : vim_strsave(pat);
- m->pos.cur = 0;
m->hlg_id = hlg_id;
m->match.regprog = regprog;
m->match.rmm_ic = FALSE;
@@ -6827,7 +6826,7 @@
listitem_T *li;
int i;
- for (i = 0, li = pos_list->lv_first; i < MAXPOSMATCH;
+ for (i = 0, li = pos_list->lv_first; li != NULL && i < MAXPOSMATCH;
i++, li = li->li_next)
{
linenr_T lnum = 0;
@@ -6837,11 +6836,6 @@
listitem_T *subli;
int error = FALSE;
- if (li == NULL)
- {
- m->pos.pos[i].lnum = 0;
- break;
- }
if (li->li_tv.v_type == VAR_LIST)
{
subl = li->li_tv.vval.v_list;
@@ -6853,12 +6847,12 @@
lnum = get_tv_number_chk(&subli->li_tv, &error);
if (error == TRUE)
goto fail;
- m->pos.pos[i].lnum = lnum;
if (lnum == 0)
{
--i;
continue;
}
+ m->pos.pos[i].lnum = lnum;
subli = subli->li_next;
if (subli != NULL)
{
@@ -6879,7 +6873,10 @@
else if (li->li_tv.v_type == VAR_NUMBER)
{
if (li->li_tv.vval.v_number == 0)
+ {
+ --i;
continue;
+ }
m->pos.pos[i].lnum = li->li_tv.vval.v_number;
m->pos.pos[i].col = 0;
m->pos.pos[i].len = 0;