• Eli Zaretskii's avatar
    Fix point motion in cloned buffers · a416e1d6
    Eli Zaretskii authored
    * src/thread.c (post_acquire_global_lock): Call
    set_buffer_internal_2 instead of tricking set_buffer_internal_1
    into resetting the current buffer even if it didn't change.  This
    avoids bug#25165, caused by failing to record the modified values
    of point and mark, because current_buffer was set to NULL.  Also,
    don't bother re-setting the buffer if there was no thread switch,
    as that just wastes cycles.
    * src/buffer.c (set_buffer_internal_2): New function, with most of
    the body of set_buffer_internal_1, but without the test for B
    being identical to the current buffer.
    (set_buffer_internal_1): Call set_buffer_internal_2 if B is not
    identical to the current buffer.
    * src/buffer.h (set_buffer_internal_2): Add prototype.
    * test/src/thread-tests.el (thread-sticky-point): New test.
buffer.c 201 KB