From a3d794a153425b09a0185c660926c241d13e0f2c Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Tue, 28 Aug 2012 09:49:02 +0400 Subject: [PATCH] Fix usage of set_buffer_internal. * buffer.h (set_buffer_internal): Make it BUFFER_INLINE. * buffer.c (set_buffer_if_live): Use set_buffer_internal. * coding.c (decode_coding): Omit redundant test. * fileio.c (decide_coding_unwind): Likewise. * fns.c (secure_hash): Likewise. * insdel.c (modify_region): Likewise. * keyboard.c (command_loop_1): Likewise. * print.c (PRINTFINISH): Likewise. * xdisp.c (run_window_scroll_functions): Use set_buffer_internal. --- src/ChangeLog | 13 +++++++++++++ src/buffer.c | 18 +----------------- src/buffer.h | 17 ++++++++++++++++- src/coding.c | 3 +-- src/fileio.c | 3 +-- src/fns.c | 6 ++---- src/insdel.c | 6 ++---- src/keyboard.c | 6 ++---- src/print.c | 3 +-- src/xdisp.c | 3 +-- 10 files changed, 40 insertions(+), 38 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 531d20ffca0..0806cc0ff95 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,16 @@ +2012-08-28 Dmitry Antipov + + Fix usage of set_buffer_internal. + * buffer.h (set_buffer_internal): Make it BUFFER_INLINE. + * buffer.c (set_buffer_if_live): Use set_buffer_internal. + * coding.c (decode_coding): Omit redundant test. + * fileio.c (decide_coding_unwind): Likewise. + * fns.c (secure_hash): Likewise. + * insdel.c (modify_region): Likewise. + * keyboard.c (command_loop_1): Likewise. + * print.c (PRINTFINISH): Likewise. + * xdisp.c (run_window_scroll_functions): Use set_buffer_internal. + 2012-08-27 Paul Eggert * dispnew.c: Use bool for boolean. diff --git a/src/buffer.c b/src/buffer.c index 4d606c2105a..5185e6c89f1 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -2099,22 +2099,6 @@ DEFUN ("current-buffer", Fcurrent_buffer, Scurrent_buffer, 0, 0, 0, XSETBUFFER (buf, current_buffer); return buf; } - -/* Set the current buffer to B. - - We previously set windows_or_buffers_changed here to invalidate - global unchanged information in beg_unchanged and end_unchanged. - This is no longer necessary because we now compute unchanged - information on a buffer-basis. Every action affecting other - windows than the selected one requires a select_window at some - time, and that increments windows_or_buffers_changed. */ - -void -set_buffer_internal (register struct buffer *b) -{ - if (current_buffer != b) - set_buffer_internal_1 (b); -} /* Set the current buffer to B, and do not set windows_or_buffers_changed. This is used by redisplay. */ @@ -2226,7 +2210,7 @@ Lisp_Object set_buffer_if_live (Lisp_Object buffer) { if (! NILP (BVAR (XBUFFER (buffer), name))) - Fset_buffer (buffer); + set_buffer_internal (XBUFFER (buffer)); return Qnil; } diff --git a/src/buffer.h b/src/buffer.h index c8b59ffde0b..929da3c4791 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -1014,7 +1014,6 @@ extern ptrdiff_t sort_overlays (Lisp_Object *, ptrdiff_t, struct window *); extern void recenter_overlay_lists (struct buffer *, ptrdiff_t); extern ptrdiff_t overlay_strings (ptrdiff_t, struct window *, unsigned char **); extern void validate_region (Lisp_Object *, Lisp_Object *); -extern void set_buffer_internal (struct buffer *); extern void set_buffer_internal_1 (struct buffer *); extern void set_buffer_temp (struct buffer *); extern Lisp_Object buffer_local_value_1 (Lisp_Object, Lisp_Object); @@ -1023,6 +1022,22 @@ extern _Noreturn void buffer_slot_type_mismatch (Lisp_Object, int); extern void fix_overlays_before (struct buffer *, ptrdiff_t, ptrdiff_t); extern void mmap_set_vars (bool); +/* Set the current buffer to B. + + We previously set windows_or_buffers_changed here to invalidate + global unchanged information in beg_unchanged and end_unchanged. + This is no longer necessary because we now compute unchanged + information on a buffer-basis. Every action affecting other + windows than the selected one requires a select_window at some + time, and that increments windows_or_buffers_changed. */ + +BUFFER_INLINE void +set_buffer_internal (struct buffer *b) +{ + if (current_buffer != b) + set_buffer_internal_1 (b); +} + /* Get overlays at POSN into array OVERLAYS with NOVERLAYS elements. If NEXTP is non-NULL, return next overlay there. See overlay_at arg CHANGE_REQ for meaning of CHRQ arg. */ diff --git a/src/coding.c b/src/coding.c index 5bfd42c7272..02e7b34695e 100644 --- a/src/coding.c +++ b/src/coding.c @@ -7006,8 +7006,7 @@ decode_coding (struct coding_system *coding) undo_list = Qt; if (BUFFERP (coding->dst_object)) { - if (current_buffer != XBUFFER (coding->dst_object)) - set_buffer_internal (XBUFFER (coding->dst_object)); + set_buffer_internal (XBUFFER (coding->dst_object)); if (GPT != PT) move_gap_both (PT, PT_BYTE); diff --git a/src/fileio.c b/src/fileio.c index 6906af7e74f..44696cc8e62 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3142,8 +3142,7 @@ decide_coding_unwind (Lisp_Object unwind_data) undo_list = XCAR (unwind_data); buffer = XCDR (unwind_data); - if (current_buffer != XBUFFER (buffer)) - set_buffer_internal (XBUFFER (buffer)); + set_buffer_internal (XBUFFER (buffer)); adjust_markers_for_delete (BEG, BEG_BYTE, Z, Z_BYTE); adjust_overlays_for_delete (BEG, Z - BEG); set_buffer_intervals (current_buffer, NULL); diff --git a/src/fns.c b/src/fns.c index 91ba28504a0..b13311e26d0 100644 --- a/src/fns.c +++ b/src/fns.c @@ -4661,8 +4661,7 @@ secure_hash (Lisp_Object algorithm, Lisp_Object object, Lisp_Object start, Lisp_ CHECK_BUFFER (object); bp = XBUFFER (object); - if (bp != current_buffer) - set_buffer_internal (bp); + set_buffer_internal (bp); if (NILP (start)) b = BEGV; @@ -4749,8 +4748,7 @@ secure_hash (Lisp_Object algorithm, Lisp_Object object, Lisp_Object start, Lisp_ } object = make_buffer_string (b, e, 0); - if (prev != current_buffer) - set_buffer_internal (prev); + set_buffer_internal (prev); /* Discard the unwind protect for recovering the current buffer. */ specpdl_ptr--; diff --git a/src/insdel.c b/src/insdel.c index 1dceb67bffa..53a3a1370cd 100644 --- a/src/insdel.c +++ b/src/insdel.c @@ -1779,8 +1779,7 @@ modify_region (struct buffer *buffer, ptrdiff_t start, ptrdiff_t end, { struct buffer *old_buffer = current_buffer; - if (buffer != old_buffer) - set_buffer_internal (buffer); + set_buffer_internal (buffer); prepare_to_modify_buffer (start, end, NULL); @@ -1794,8 +1793,7 @@ modify_region (struct buffer *buffer, ptrdiff_t start, ptrdiff_t end, bset_point_before_scroll (buffer, Qnil); - if (buffer != old_buffer) - set_buffer_internal (old_buffer); + set_buffer_internal (old_buffer); } /* Check that it is okay to modify the buffer between START and END, diff --git a/src/keyboard.c b/src/keyboard.c index 3e0ead7e4fb..f31480e3b88 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -1434,8 +1434,7 @@ command_loop_1 (void) Fkill_emacs (Qnil); /* Make sure the current window's buffer is selected. */ - if (XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer) - set_buffer_internal (XBUFFER (XWINDOW (selected_window)->buffer)); + set_buffer_internal (XBUFFER (XWINDOW (selected_window)->buffer)); /* Display any malloc warning that just came out. Use while because displaying one warning can cause another. */ @@ -1513,8 +1512,7 @@ command_loop_1 (void) /* A filter may have run while we were reading the input. */ if (! FRAME_LIVE_P (XFRAME (selected_frame))) Fkill_emacs (Qnil); - if (XBUFFER (XWINDOW (selected_window)->buffer) != current_buffer) - set_buffer_internal (XBUFFER (XWINDOW (selected_window)->buffer)); + set_buffer_internal (XBUFFER (XWINDOW (selected_window)->buffer)); ++num_input_keys; diff --git a/src/print.c b/src/print.c index 64449aeaf2a..36d0b5dce9d 100644 --- a/src/print.c +++ b/src/print.c @@ -197,8 +197,7 @@ int print_output_debug_flag EXTERNALLY_VISIBLE = 1; ? PT - start_point : 0), \ old_point_byte + (old_point_byte >= start_point_byte \ ? PT_BYTE - start_point_byte : 0)); \ - if (old != current_buffer) \ - set_buffer_internal (old); + set_buffer_internal (old); #define PRINTCHAR(ch) printchar (ch, printcharfun) diff --git a/src/xdisp.c b/src/xdisp.c index 8289c003031..13b03736bde 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -14551,8 +14551,7 @@ run_window_scroll_functions (Lisp_Object window, struct text_pos startp) make_number (CHARPOS (startp))); SET_TEXT_POS_FROM_MARKER (startp, w->start); /* In case the hook functions switch buffers. */ - if (current_buffer != XBUFFER (w->buffer)) - set_buffer_internal_1 (XBUFFER (w->buffer)); + set_buffer_internal (XBUFFER (w->buffer)); } return startp; -- 2.39.2