Fix bad parsing of 'colorcolumn'. (Dominique Pelle)

This commit is contained in:
Bram Moolenaar
2010-07-16 21:29:06 +02:00
parent 624c7aa691
commit 11505dcd2b

View File

@ -6956,7 +6956,7 @@ check_colorcolumn(wp)
int i; int i;
int j = 0; int j = 0;
for (s = wp->w_p_cc; *s != NUL && count < 255; ++s) for (s = wp->w_p_cc; *s != NUL && count < 255;)
{ {
if (*s == '-' || *s == '+') if (*s == '-' || *s == '+')
{ {
@ -6967,21 +6967,23 @@ check_colorcolumn(wp)
return e_invarg; return e_invarg;
col = col * getdigits(&s); col = col * getdigits(&s);
if (wp->w_buffer->b_p_tw == 0) if (wp->w_buffer->b_p_tw == 0)
continue; /* 'textwidth' not set, skip this item */ goto skip; /* 'textwidth' not set, skip this item */
col += wp->w_buffer->b_p_tw; col += wp->w_buffer->b_p_tw;
if (col < 0) if (col < 0)
continue; goto skip;
} }
else if (VIM_ISDIGIT(*s)) else if (VIM_ISDIGIT(*s))
col = getdigits(&s); col = getdigits(&s);
else else
return e_invarg; return e_invarg;
color_cols[count++] = col - 1; /* 1-based to 0-based */ color_cols[count++] = col - 1; /* 1-based to 0-based */
skip:
if (*s == NUL) if (*s == NUL)
break; break;
if (*s != ',') if (*s != ',')
return e_invarg; return e_invarg;
if (*++s == NUL)
return e_invarg; /* illegal trailing comma as in "set cc=80," */
} }
vim_free(wp->w_p_cc_cols); vim_free(wp->w_p_cc_cols);