# HG changeset patch # User Karl Heuer # Date 888109451 0 # Node ID 15d1b7bf1cd734a327b0142fe50adcff1e43d504 # Parent 0e9aa345d2f9a4c7ef100a1f84e864e6e04f6341 (update_syntax_table): Fix calculations using offset. (skip_chars): Fix loop termination condition. diff -r 0e9aa345d2f9 -r 15d1b7bf1cd7 src/syntax.c --- a/src/syntax.c Sun Feb 22 01:03:49 1998 +0000 +++ b/src/syntax.c Sun Feb 22 01:04:11 1998 +0000 @@ -130,8 +130,8 @@ invalidate = 0; if (NULL_INTERVAL_P (i)) return; - gl_state.b_property = i->position - 1; - gl_state.e_property = INTERVAL_LAST_POS (i); + gl_state.b_property = i->position - 1 - gl_state.offset; + gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset; goto update; } oldi = i = count > 0 ? gl_state.forward_i : gl_state.backward_i; @@ -151,7 +151,7 @@ invalidate = 0; gl_state.right_ok = 1; /* Invalidate the other end. */ gl_state.forward_i = i; - gl_state.e_property = INTERVAL_LAST_POS (i); + gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset; } } else if (charpos >= INTERVAL_LAST_POS (i)) /* Move right. */ @@ -165,7 +165,7 @@ invalidate = 0; gl_state.left_ok = 1; /* Invalidate the other end. */ gl_state.backward_i = i; - gl_state.b_property = i->position - 1; + gl_state.b_property = i->position - 1 - gl_state.offset; } } else if (count > 0 ? gl_state.right_ok : gl_state.left_ok) @@ -187,13 +187,13 @@ { gl_state.backward_i = i; gl_state.left_ok = 1; /* Invalidate the other end. */ - gl_state.b_property = i->position - 1; + gl_state.b_property = i->position - 1 - gl_state.offset; } else { gl_state.forward_i = i; gl_state.right_ok = 1; /* Invalidate the other end. */ - gl_state.e_property = INTERVAL_LAST_POS (i); + gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset; } } @@ -246,12 +246,12 @@ { if (count > 0) { - gl_state.e_property = i->position; + gl_state.e_property = i->position - gl_state.offset; gl_state.forward_i = i; } else { - gl_state.b_property = i->position + LENGTH (i) - 1; + gl_state.b_property = i->position + LENGTH (i) - 1 - gl_state.offset; gl_state.backward_i = i; } } @@ -1370,15 +1370,17 @@ { if (multibyte) { - while (pos < XINT (lim) - && fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))]) - { - /* Since we already checked for multibyteness, - avoid using INC_BOTH which checks again. */ - INC_POS (pos_byte); - pos++; - UPDATE_SYNTAX_TABLE_FORWARD (pos); - } + if (pos < XINT (lim)) + while (fastmap[(int) SYNTAX (FETCH_CHAR (pos_byte))]) + { + /* Since we already checked for multibyteness, + avoid using INC_BOTH which checks again. */ + INC_POS (pos_byte); + pos++; + if (pos >= XINT (lim)) + break; + UPDATE_SYNTAX_TABLE_FORWARD (pos); + } } else { @@ -1412,16 +1414,14 @@ } else { - while (pos > XINT (lim)) - { - pos--; - UPDATE_SYNTAX_TABLE_BACKWARD (pos); - if (!fastmap[(int) SYNTAX (FETCH_BYTE (pos))]) - { - pos++; + if (pos > XINT (lim)) + while (fastmap[(int) SYNTAX (FETCH_BYTE (pos - 1))]) + { + pos--; + if (pos <= XINT (lim)) break; - } - } + UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1); + } } } }