# HG changeset patch # User Richard M. Stallman # Date 888806453 0 # Node ID ceb05db73a63adcbff3de648f3c2868fde3efe4e # Parent ba03aa5d64d653340824b2f2a52ee3c402f3c245 (update_syntax_table): Properly update `position' field of used intervals. diff -r ba03aa5d64d6 -r ceb05db73a63 src/syntax.c --- a/src/syntax.c Sun Mar 01 23:17:19 1998 +0000 +++ b/src/syntax.c Mon Mar 02 02:40:53 1998 +0000 @@ -130,6 +130,21 @@ invalidate = 0; if (NULL_INTERVAL_P (i)) return; + /* interval_of () updates only ->position of the return value, + update the parents manually to speed up update_interval. */ + while (!NULL_PARENT (i)) + { + if (AM_RIGHT_CHILD (i)) + i->parent->position = i->position + - LEFT_TOTAL_LENGTH (i) + TOTAL_LENGTH (i) /* right end */ + - TOTAL_LENGTH (i->parent) + + LEFT_TOTAL_LENGTH (i->parent); + else + i->parent->position = i->position - LEFT_TOTAL_LENGTH (i) + + TOTAL_LENGTH (i); + i = i->parent; + } + i = gl_state.forward_i; gl_state.b_property = i->position - 1 - gl_state.offset; gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset; goto update;