• Alan Mackenzie's avatar
    Maintain interval ->position fields correctly in update_interval · 31182c1d
    Alan Mackenzie authored
    Also fix some anomalies in the handling of byte positions in regexp-emacs.c
    This fixes bug #34525.
    
    * src/intervals.c (SET_PARENT_POSITION): New macro.
    (update_interval): When moving to an interval's parent, set that parent's
    ->position field, to maintain the consistency of the tree.
    
    * src/intervals.h (struct interval): Amend the comment describing when
    ->position is valid.
    
    * src/pdumper.c: Update the hash associated with struct interval.
    
    * src/regex-emacs.c: (re_match_2_internal): Only invoke POINTER_TO_OFFSET on a
    known character boundary.  Only perform arithmetic on character positions, not
    on byte positions.  Correct the argument to an invocation of
    UPDATE_SYNTAX_TABLE_FORWARD by adding 1 to it (in case wordend:).
    
    * src/syntax.c: (update_syntax_table): Remove the now redundant code that set
    the ->position field of all parents of the interval found by update_interval.
    31182c1d
intervals.h 11.7 KB