# HG changeset patch # User Stefan Monnier # Date 1058297525 0 # Node ID d38453fdf2a078734a45d5e7389c0fd1aebad378 # Parent 20d4eb1de9b0c68440af1658d9f47076afb61e87 (copy_overlays): Use EMACS_INT for positions. (Fswitch_to_buffer): Don't signal an error when switching to the same buffer in a dedicated window. diff -r 20d4eb1de9b0 -r d38453fdf2a0 src/buffer.c --- a/src/buffer.c Tue Jul 15 19:19:59 2003 +0000 +++ b/src/buffer.c Tue Jul 15 19:32:05 2003 +0000 @@ -447,7 +447,7 @@ for (; list; list = list->next) { Lisp_Object overlay, start, end, old_overlay; - int charpos; + EMACS_INT charpos; XSETMISC (old_overlay, list); charpos = marker_position (OVERLAY_START (old_overlay)); @@ -1630,6 +1630,11 @@ { char *err; + if (EQ (buffer, Fwindow_buffer (selected_window))) + /* Basically a NOP. Avoid signalling an error if the selected window + is dedicated, or a minibuffer, ... */ + return Fset_buffer (buffer); + err = no_switch_window (selected_window); if (err) error (err); @@ -4098,6 +4103,14 @@ overlay = Qnil; tail = NULL; + /* We used to run the functions as soon as we found them and only register + them in last_overlay_modification_hooks for the purpose of the `after' + case. But running elisp code as we traverse the list of overlays is + painful because the list can be modified by the elisp code so we had to + copy at several places. We now simply do a read-only traversal that + only collects the functions to run and we run them afterwards. It's + simpler, especially since all the code was already there. -stef */ + if (!after) { /* We are being called before a change.