# HG changeset patch # User Bram Moolenaar # Date 1306338987 -7200 # Node ID 8d8bd6307b1aa51fe2f592ce45d32abf0f6666d8 # Parent eaf92a6745ec8d46c2da9650d5c4acec8cf58fca updated for version 7.3.205 Problem: Syntax "extend" doesn't work correctly. Solution: Avoid calling check_state_ends() recursively (Ben Schmidt) diff --git a/src/syntax.c b/src/syntax.c --- a/src/syntax.c +++ b/src/syntax.c @@ -990,7 +990,10 @@ syn_start_line() * previous line and regions that have "keepend". */ if (current_state.ga_len > 0) + { syn_update_ends(TRUE); + check_state_ends(); + } next_match_idx = -1; ++current_line_id; @@ -1064,7 +1067,6 @@ syn_update_ends(startofline) } } check_keepend(); - check_state_ends(); } /**************************************** @@ -2533,7 +2535,7 @@ push_next_match(cur_si) check_state_ends() { stateitem_T *cur_si; - int had_extend = FALSE; + int had_extend; cur_si = &CUR_STATE(current_state.ga_len - 1); for (;;) @@ -2586,8 +2588,7 @@ check_state_ends() /* When the ended item has "extend", another item with * "keepend" now needs to check for its end. */ - if (cur_si->si_flags & HL_EXTEND) - had_extend = TRUE; + had_extend = (cur_si->si_flags & HL_EXTEND); pop_current_state(); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -710,6 +710,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 205, +/**/ 204, /**/ 203,